2017-10-09 4 views
1

私は2つのパンダシリーズを持っていて、単に文字列の値を比較し、共通の値の文字列(およびおそらくはインデックス)を返すだけです。例ではハンナ、フランクとアーニー下記::2台のPandasシリーズの文字列の比較

print(x) 
print(y) 

0  Anne 
1  Beth 
2 Caroline 
3  David 
4  Ernie 
5  Frank 
6  George 
7  Hannah 
Name: 0, dtype: object 
1  Hannah 
2  Frank 
3  Ernie 
4   NaN 
5   NaN 
6   NaN 
7   NaN 

x.sort_index(axis=0) == y.sort_index(axis=0) 

012がそうであるように

x == y 

を行うと、

ValueError: Can only compare identically-labeled Series objects 

をスローします

x.reindex_like(y) > y 

何かをしても正しいものではありません!

+0

xがyより長いようです! – IanS

答えて

1

共通の価値観が必要な場合にのみ、あなたがsetに最初の列に変換使用してintersection使用することができます。

df = pd.merge(x.rename('a').reset_index(), y.rename('a').reset_index(), on='a') 
print (df) 
    index_x  a index_y 
0  4 Ernie  3 
1  5 Frank  2 
2  7 Hannah  1 
:列に変換インデックスのため reset_indexでデフォルト inner join
a = set(x).intersection(y) 
print (a) 
{'Hannah', 'Frank', 'Ernie'} 

そしてインデックスの

mergeを必要とします

詳細:

print (x.rename('a').reset_index()) 
    index   a 
0  0  Anne 
1  1  Beth 
2  2 Caroline 
3  3  David 
4  4  Ernie 
5  5  Frank 
6  6 George 
7  7 Hannah 

print (y.rename('a').reset_index()) 
    index  a 
0  1 Hannah 
1  2 Frank 
2  3 Ernie 
3  4  NaN 
4  5  NaN 
5  6  NaN 
6  7  NaN 
+0

これはまさに私が後にしたものです。ありがとう!! – npross