【发布时间】:2021-11-30 14:38:36
【问题描述】:
我有两个数据框,它们都有相同的列。我想比较它们,并为每两行找到不同的,在哪一列上它们具有不同的值
我的数据框如下:
A 列是唯一键两个数据框共享
df1
A B C D E
0 V 10 5 18 20
1 W 9 18 11 13
2 X 8 7 12 5
3 Y 7 9 7 8
4 Z 6 5 3 90
df2
A B C D E
0 V 30 5 18 20
1 W 9 18 11 9
2 X 8 7 12 5
3 Y 36 9 7 8
4 Z 6 5 3 90
预期结果:
df3
A key
0 V B
1 W E
3 Y B
到目前为止我尝试过的是:
df3 = df1.merge(df2, on=['A', 'B', 'C', 'D', 'E'], how='outer', indicator=True)
df3 = df3[df3._merge != 'both'] #to retrieve only the rows where there's a difference spotted
这就是我为 df3 得到的东西
A B C D E _merge
0 V 10 5 18 20 left_only
1 W 9 18 11 13 left_only
3 Y 7 9 7 8 left_only
5 V 30 5 18 20 right_only
6 W 9 18 11 9 right_only
8 Y 36 9 7 8 right_only
我怎样才能达到预期的效果?
【问题讨论】:
-
数据框是否也有相同的行(或相同的键,按顺序)?
-
在存在多个不同列的情况下,您希望得到什么结果?
标签: python python-3.x pandas