Python 比较熊猫的数据帧

Python 比较熊猫的数据帧,python,python-2.7,pandas,dataframe,pattern-matching,Python,Python 2.7,Pandas,Dataframe,Pattern Matching,我有两个独立的数据帧(df1和df2),它们有多个列和一些公共列 我想查找df2中与df1中不匹配的每一行。df1和df2之间的匹配定义为在同一行的两个不同列A和B中具有相同的值 df1 df2 结果df(仅返回第1行和第3行,因为df2中A和B的值在df1中的同一行中与第2行和第4行匹配) 在这种情况下,是否可以使用isin方法?这种方法有效: # set index (as selecting columns) df1 = df1.set_index(['A','B']) df2 = df2

我有两个独立的数据帧(
df1
df2
),它们有多个列和一些公共列

我想查找
df2
中与
df1
中不匹配的每一行。
df1
df2
之间的匹配定义为在同一行的两个不同列A和B中具有相同的值

df1

df2

结果df(仅返回第1行和第3行,因为
df2
中A和B的值在
df1
中的同一行中与第2行和第4行匹配)

在这种情况下,是否可以使用
isin
方法?

这种方法有效:

# 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

你能澄清一下规则吗?无论何时只要列A或列B在df1中的任何位置都有相同的值,看起来都是从df2中选择行。这是正确的吗?除了比较A列和B列中的值,如果我还想进行其他比较..比如。。“df2”中A列中的数字的所有因子与B列中的数字在确定不匹配之前,是否有任何运算符可以使用?对不起,我是Python新手,对函数和选项的数量感到不知所措。我不确定我是否完全理解你的问题。你能提供一个例子和输出吗?
A    B    D       text
45   3    1       shot
33   5    2       shot
10   2    3       miss
20   1    4       miss
A    B    D       text
45   3    1       shot
10   2    3       miss
# 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