2017-08-23 1 views
1

フィーチャの2つの列( "a"、 "b")を比較し、両方に共通ではない値のみを返したいと思います。行のサイズが等しくなく、値が複数回出現することがあります。Python - フィーチャの2つの列を比較し、両方に共通でない戻り値

は、私が試した:

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

しかし、これはlenの場合は動作していないよう(B)> LEN(a)の

任意の提案は?

ソースのDF:

答えて

3

IIUCあなたがSymmetric difference探している

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') 
+0

ありがとうございました!あなたの最初の説明は論理を完全に示しています。私はsymmetric_differenceオブジェクトを実際に理解していませんが、それは私のコードで働いています(列> 35kのlen)。 – GPB

関連する問題