我有两个独立的pandas数据帧(df1
和df2
),它们有多个列,包含一些公共列。
我想在df2
中找到df1
中没有匹配项的每一行。 df1
和df2
之间的匹配被定义为在同一行中的两个不同的列A和B中具有相同的值。
DF1
A B C text
45 2 1 score
33 5 2 miss
20 1 3 score
DF2
A B D text
45 3 1 shot
33 5 2 shot
10 2 3 miss
20 1 4 miss
结果df(仅返回第1行和第3行,因为df2
中A和B的值与df1
中第2行和第4行的同一行匹配)
A B D text
45 3 1 shot
10 2 3 miss
在这种情况下是否可以使用isin
方法?
答案 0 :(得分:1)
这有效:
# set index (as selecting columns)
df1 = df1.set_index(['A','B'])
df2 = df2.set_index(['A','B'])
# now .isin will work
df2[~df2.index.isin(df1.index)].reset_index()
A B D text
0 45 3 1 shot
1 10 2 3 miss