Python - 比较两列功能,返回两者不相同的值

时间:2017-08-23 17:27:57

标签: python pandas

我想比较两列功能(" a"," b")并仅返回两者不共有的值。行的大小不相等,值可能会出现多次。

我试过了:

a[np.logical_not(np.in1d(a,b))]

但如果len(b)>这似乎不起作用。 len(a)

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

IIUC您正在寻找Symmetric difference

来源DF:

In [41]: d1
Out[41]:
   a
0  a
1  b
2  c
3  x
4  d
5  l
6  z

In [42]: d2
Out[42]:
   b
0  b
1  a
2  d
3  c
4  y

Numpy解决方案:

In [43]: np.setdiff1d(np.union1d(d1.a, d2.b), np.intersect1d(d1.a, d2.b))
Out[43]: array(['l', 'x', 'y', 'z'], dtype=object)

熊猫解决方案:

In [44]: pd.Index.symmetric_difference(pd.Index(d1.a), pd.Index(d2.b))
Out[44]: Index(['l', 'x', 'y', 'z'], dtype='object')