首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -查找两个数据帧之间的行差异

Python -查找两个数据帧之间的行差异
EN

Stack Overflow用户
提问于 2017-08-15 05:50:18
回答 1查看 511关注 0票数 1

我有两个数据帧,它们的列数相同,分别是d1和d2。

注意: d1和d2可能有不同的行数。注意: d1和d2可能不会被索引到每个数据帧中的同一行。

检查两个数据帧是否具有相同数据的最佳方法是什么?

我当前的解决方案包括将两个数据帧添加到一起并删除任何匹配的行。

代码语言:javascript
复制
d_combined = d1.append(d2)
d_discrepancy = d_combined.drop_duplicates(keep=False)
print(d_discrepancy)

我是python和pandas库的新手。因为我将使用具有数百万行和8-10列的数据帧,有没有更快、更有效的方法来检查差异?还可以显示结果差异行来自哪个初始数据帧吗?

EN

回答 1

Stack Overflow用户

发布于 2017-08-15 06:29:43

设置

代码语言:javascript
复制
d1 = pd.DataFrame(dict(A=[1, 2, 3, 4]))
d2 = pd.DataFrame(dict(A=[2, 3, 4, 5]))

选项1

使用pd.merge。我将包含参数indicator=True以显示数据的来源。

代码语言:javascript
复制
d1.merge(d2, how='outer', indicator=True)

   A      _merge
0  1   left_only
1  2        both
2  3        both
3  4        both
4  5  right_only

如果它们有相同的数据,我希望所有内容的_merge列都是both。这样我们就可以用

代码语言:javascript
复制
d1.merge(d2, how='outer', indicator=True)._merge.eq('both').all()

False

在本例中,它返回的是False,因此不是相同的数据。

选项2

使用drop_duplicates

您需要确保首先删除初始数据帧中的副本。

代码语言:javascript
复制
d1.drop_duplicates().append(d2.drop_duplicates()) \
    .drop_duplicates(keep=False).empty
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45683567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档