如何使用python比较两个数据框并获取不匹配的行?

Toi*_*Toi 3 python indexing rows dataframe pandas

我有两个数据框,df1 和 df2。现在,df1 包含 6 条记录,df2 包含 4 条记录。我想从中找出无与伦比的记录。我尝试过,但出现错误,ValueError: Can only compare identically-labelled DataFrame objects我猜这是由于 df 的长度造成的,因为 df1 有 6 个,df2 有 4 个,但是我如何比较它们并获取不匹配的行?

代码

df1=
  a  b  c
0 1  2  3
1 4  5  6
2 3  5  5
3 5  6  7
4 6  7  8
5 6  6  6


df2 =
  a  b  c
0 3  5  5
1 5  6  7
2 6  7  8
3 6  6  6

index = (df != df2).any(axis=1)
df3 = df.loc[index]
Run Code Online (Sandbox Code Playgroud)

这使:

ValueError: Can only compare identically-labelled DataFrame objects
Run Code Online (Sandbox Code Playgroud)

预期输出:

 a  b  c
0 1  2  3
1 4  5  6
Run Code Online (Sandbox Code Playgroud)

我知道错误是由于长度造成的,但是有什么方法可以比较两个数据帧并从中获取不匹配的记录吗?

May*_*wal 5

使用df.mergewithindicator=True并选择除 之外的所有行both

In [173]: df = df1.merge(df2, indicator=True, how='outer').query('_merge != "both"').drop('_merge', 1)

In [174]: df
Out[174]: 
   a  b  c
0  1  2  3
1  4  5  6
Run Code Online (Sandbox Code Playgroud)