2017-10-09 10 views
1

두 개의 팬더 시리즈가 있고 단순히 문자열 값을 비교하고 공통된 값의 문자열 (및 인덱스 일 수도 있음)을 반환하고자합니다.두 팬더 시리즈 문자열 입력 비교

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

012을하는

ValueError: Can only compare identically-labeled Series objects 

로 아래의 예 ::

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 

을함으로써 한나, 프랭크와 어니 발생

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