Raw1
Name Age Height
0 Ronaldo 25 189.0
1 Honey 26 193.0
2 Kola 14 200.0
3 Tree 19 155.0
4 Rot 22 165.0
5 Rat 28 170.0
6 Toy 30 172.0
7 Raft 32 156.0
8 Rifle 28 165.0
Raw2
Name Age Height
0 Ronaldo 25 189.0
1 Honey 26 NaN
2 Kola 14 200.0
3 Tree 0 155.0
4 Rot 22 NaN
5 NaN 28 170.0
6 Toy 30 172.0
7 Raft 32 156.0
8 Rifle 28 165.0
我想列出这两个数据框之间不匹配的行。但是,我只能通过right_index通过合并列出匹配的行。
raw4=pd.merge(raw1,raw2, on=['Name','Age','Height'], right_index=True)
当前输出
Name Age Height
0 Ronaldo 25 189.0
2 Kola 14 200.0
6 Toy 30 172.0
7 Raft 32 156.0
8 Rifle 28 165.0
预期产量
Name Age Height
1 Honey 26 NaN
3 Tree 0 155.0
4 Rot 22 NaN
答案 0 :(得分:2)
您可以按元素方式比较DataFrame,然后检查其中任何一项不同的那些行:
indexes = (raw1 != raw2).any(axis=1)
raw4 = raw2.loc[indexes]
输出:
Name Age Height
1 Honey 26 NaN
3 Tree 0 155.0
4 Rot 22 NaN
5 NaN 28 170.0
请注意,如果raw1
和raw2
的值都为NaN
,则此方法将不起作用(NaN
始终与任何数字不同,包括{{1} }。