繁体   English   中英

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

[英]Python - Finding Row Discrepancies Between Two Dataframes

我有两个具有相同列数的数据帧,d1和d2。

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

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

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

d_combined = d1.append(d2)
d_discrepancy = d_combined.drop_duplicates(keep=False)
print(d_discrepancy)

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

设定

d1 = pd.DataFrame(dict(A=[1, 2, 3, 4]))
d2 = pd.DataFrame(dict(A=[2, 3, 4, 5]))

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

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

如果他们有相同的数据,我希望_mergeboth适用于所有内容。 所以我们可以查看

d1.merge(d2, how='outer', indicator=True)._merge.eq('both').all()

False

在这种情况下,它返回False因此不是相同的数据。


选项2
使用drop_duplicates
您需要确保首先从初始数据帧中删除重复项。

d1.drop_duplicates().append(d2.drop_duplicates()) \
    .drop_duplicates(keep=False).empty

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM