我想比较两列功能(" a"," b")并仅返回两者不共有的值。行的大小不相等,值可能会出现多次。
我试过了:
a[np.logical_not(np.in1d(a,b))]
但如果len(b)>这似乎不起作用。 len(a)
有什么建议吗?
答案 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')