2017-10-09 129 views
1

我有两个熊猫系列,只是想比较它们的字符串值,并返回它们共同的值的字符串(也可能是索引)汉娜,弗兰克和厄尼在下面的例子::比较两个熊猫系列中的字符串条目

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 == y 

抛出一个

ValueError: Can only compare identically-labeled Series objects 

一样

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

x.reindex_like(y) > y 

做些事情,但不是正确的事情!

+0

看来x比y更长! – IanS

回答

1

如果需要共同的价值观不仅可以使用第一列转换为set和使用intersection:与reset_index

a = set(x).intersection(y) 
print (a) 
{'Hannah', 'Frank', 'Ernie'} 

而对于指数需要merge默认inner join的转换指标的列:

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 

细节:

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