我有两个数据帧,它们的列数相同,分别是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列的数据帧,有没有更快、更有效的方法来检查差异?还可以显示结果差异行来自哪个初始数据帧吗?
发布于 2017-08-15 06:29:43
设置
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如果它们有相同的数据,我希望所有内容的_merge列都是both。这样我们就可以用
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).emptyhttps://stackoverflow.com/questions/45683567
复制相似问题