我有两个数据框,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]
这将提供:
ValueError: Can only compare identically-labelled DataFrame objects
预期输出:
a b c
0 1 2 3
1 4 5 6
我知道这个错误是由于长度问题导致的,但是有没有办法比较两个数据框并将不匹配的记录取出来呢?
np.setdiff1d
函数来获取集合差异。np.setdiff1d([0, 1, 2, 3, 4, 5],[np.where(np.all(df1==df2.iloc[x],axis=1))[0][0] for x in range(4)])
- Davinder Singh