pandas 查找最新 Dataframe 中已更改的行

sxpgvts3  于 2023-06-28  发布在  其他
关注(0)|答案(3)|浏览(92)

我有两个pandas dataframes如下:

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

下面的代码给了我两个 Dataframe 之间的区别,如何从df2中只得到更改?

changed_rows = pd.concat([df1, df2]).drop_duplicates(keep=False)
3b6akqbq

3b6akqbq1#

左合并所有列并使用合并指示符标识修改的行

df2.merge(df1, how='left', indicator=True).query("_merge != 'both'")
A  B     _merge
1  2  2  left_only
2  4  5  left_only
i86rm4rw

i86rm4rw2#

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.compare.html#pandas.DataFrame.compare
我觉得你在找这样的东西。Self是df1,df2是'other' df1.compare(df2)

d = df1.compare(df2, align_axis=0, keep_shape=True, keep_equal=False)

print(d)
           A    B
0 self   NaN  NaN
  other  NaN  NaN
1 self   NaN  3.0
  other  NaN  2.0
2 self   3.0  4.0
  other  4.0  5.0
gojuced7

gojuced73#

另一种可能的解决方案:

df2[~df1.eq(df2).all(axis=1)]

输出:

A  B
1  2  2
2  4  5

相关问题