Pandas:两个数据帧之间的数据差(delta)

2024-09-27 00:14:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个非索引数据帧,具有完全相同的数据结构(相同的列),为了简单起见,下面是一个示例:

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型

^{pr2}$

我希望得到一个结果数据帧,表示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的值发生了变化,这就是它们出现在最终结果集中的原因。在

任何帮助都是非常感谢的。在


Tags: 数据comdf1joesethkavanaghjoeknomail
1条回答
网友
1楼 · 发布于 2024-09-27 00:14:33

IIUC看起来你只是在尝试匹配cols 0,1,2,3,如果你使用的是pandas的最新版本,那么可以执行leftmerge并传递paramindicator=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

相关问题 更多 >

    热门问题