如何比较两个数据集并在python中提取它们之间的差异?

时间:2019-04-02 15:10:19

标签: python pandas numpy dataframe

我有两个具有相同属性的数据集,但某些行中的信息已更改。我要提取其中信息已更改的行。

1 个答案:

答案 0 :(得分:0)

pandas提供了丰富的API,您可以使用它来随意处理数据。合并方法就是其中之一。合并是高性能的内存中联接操作,与SQL之类的关系数据库非常相似。

df1 = pd.DataFrame({'A':[1,2,3],'B':[4,5,6]})
print(df1)

   A  B
0  1  4
1  2  5
2  3  6

df2 = pd.DataFrame({'A':[1,10,3],'B':[4,5,6]})
print(df2)
    A  B
0   1  4
1  10  5
2   3  6

df3 = df1.merge(df2.drop_duplicates(),how='right', indicator=True)
print(df3)
    A  B      _merge
0   1  4        both
1   3  6        both
2  10  5  right_only

您会看到有一个名为 _merge 的新列,其中描述了该行的合并方式,两者均表示该行存在于两个数据框中,其中right_only表示该行仅存在于正确的数据上帧,在这种情况下为 df2 如果您只想更改行,则可以在_merge列

上进行过滤
df3 = df3[df3['_merge']=='right_only']
   A   B      _merge
2  10  5  right_only

注意:您可以通过将 how 参数更改为left来使用左连接进行合并,这将 抓住左数据帧(df1)中的所有内容,如果df2中也存在行,则_merge列将同时显示这两个内容。查看here了解更多详细信息