比较pandas中的数据帧

时间:2018-02-25 02:45:16

标签: python python-2.7 pandas dataframe pattern-matching

我有两个独立的pandas数据帧(df1df2),它们有多个列,包含一些公共列。

我想在df2中找到df1中没有匹配项的每一行。 df1df2之间的匹配被定义为在同一行中的两个不同的列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方法?

1 个答案:

答案 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