Python:Pandas比较两个数据框并获得不同的行

时间:2020-06-21 16:43:29

标签: python python-3.x pandas dataframe

比较两个数据框并获得不同的行

有两个df

name    password   login_id
tom      1234         1
matt     4567         2
george   7469         
stuart                3
name    password   login_id
tom      1234         1
matt     7859         2
george   7469         5
stuart   4682         3

需要获取更改后的值完整行

expected output 

name    password   login_id
matt     7859         2
george   7469         5
stuart   4682         3

只需要获取第二个df中已更改的行

2 个答案:

答案 0 :(得分:3)

您可以在将name设置为两个数据帧的索引之后使用df.ne,并在轴1上使用df.any

mask = df.set_index('name').ne(df1.set_index('name')).any(1).tolist()
df1[mask]
     name  password  login_id
1    matt      7859         2
2  george      7469         5
3  stuart      4682         3

答案 1 :(得分:3)

您可以尝试与indicator

合并
df2.merge(df1,how='left',indicator=True).loc[lambda x : x['_merge']=='left_only']
     name  password  login_id     _merge
1    matt      7859         2  left_only
2  george      7469         5  left_only
3  stuart      4682         3  left_only