我有两个具有相同属性的数据集,但某些行中的信息已更改。我要提取其中信息已更改的行。
答案 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了解更多详细信息