我有2个非索引数据框,具有完全相同的数据结构(相同的列),为了简单起见,这里是一个例子:
DF1
0 1 2 3 4
JoeK Joe Kavanagh 120 joe.kavanagh@nomail.com
BarryD Barry Dempsy 11 barry.dempsy@nomail.com
OrlaF Orla Farrel 236 ofjk@nomail.com
SethB Seth Black 563 sblack@nomail.com
KateW Kate White 254 kw12@nomail.com
和第二个:
DF2
0 1 2 3 4
JoeK Joe Kavanagh 110 jkavanagh@nomail.com
BarryD Barry Dempsy 11 barry.dempsy@nomail.com
JimmyS Jimmy Smith 250 j.Smith@nomail.com
SethB Seth Blake 563 sblack@nomail.com
我想得到一个结果数据帧,表示df1中df2中没有的行:
0 1 2 3 4
JoeK Joe Kavanagh 120 joe.kavanagh@nomail.com
OrlaF Orla Farrel 236 ofjk@nomail.com
SethB Seth Black 563 sblack@nomail.com
KateW Kate White 254 kw12@nomail.com
请注意,第一行(Joek和SethB)存在于两个数据框中,但JoeK的第3列值和SethB第2列的值已经改变,这就是他们进入的原因所在。最终结果集。
非常感谢任何帮助。
答案 0 :(得分:1)
IIUC看起来你只想尝试匹配cols 0,1,2,3,你可以执行左merge
并传递参数indicator=True
如果你使用的是最新版本大熊猫然后过滤df:
In [197]:
merged = df1.merge(df2, how='left', on=['0','1','2','3'],indicator=True)
merged[merged['_merge'] == 'left_only']
Out[197]:
0 1 2 3 4_x 4_y _merge
0 JoeK Joe Kavanagh 120 joe.kavanagh@nomail.com NaN left_only
2 OrlaF Orla Farrel 236 ofjk@nomail.com NaN left_only
3 SethB Seth Black 563 sblack@nomail.com NaN left_only
4 KateW Kate White 254 kw12@nomail.com NaN left_only