2014-09-16 10 views
0

(팬더, 파이썬 3.4) : 문구나는이라는 같은 데이터 프레임이

이라는 같은 숫자

Words 
One 
Two 
Three 
Four 
Five 

그리고 두 번째 데이터 프레임을

Words 
One Fish 
Two Fish 
Red Fish 
Blue Fish 
Four Men 
Five Men 
Wise One 
One Day 

내가 첫 번째 목록 (예 : 하나, 둘, 셋, 넷, 다섯)의 각 단어를 반복했다 할 첫 번째 WORD 그래서

일치하는 경우 두 번째 데이터 프레임에서 그 단어를 찾을 기대했다 첫 번째 데이터 프레임에서 'One'을 검색하면 'One Fish'와 'One Day'가 표시되지만 'One'이 아니라 'Two'를 검색하면 'Two Fish'가 표시됩니다. KeyError를 : 나는 이런 식으로 뭔가를 시도했습니다뿐만 아니라 그것이 작동하지 않습니다, 그것은 단지 전체 단어

for wordz in exact: #exact is the variable that contains the "Numbers" DF 
    for freqz in freq: #freq contains "Phrases" DF 
     wordz = exact[exact['Words'].isin([freq[freq['Words']]])] 
     print(wordz) 

를 검색하지만 오류가

"[ '한 물고기', '두 물고기 '...'Wise One ''인덱스에 없음 "

답변

1

접두어를 추출한 다음 왼쪽으로 조인해야합니다.

>>> right['Prefix'] = right['Words'].str.extract(r'([^ ]*)') 
>>> right 
     Words Prefix 
0 One Fish One 
1 Two Fish Two 
2 Red Fish Red 
3 Blue Fish Blue 
4 Four Men Four 
5 Five Men Five 
6 Wise One Wise 
7 One Day One 
>>> left.join(right.set_index('Prefix'), on='Words', rsuffix='.1') 
    Words Words.1 
0 One One Fish 
0 One One Day 
1 Two Two Fish 
2 Three  NaN 
3 Four Four Men 
4 Five Five Men 

나 :

>>> pd.merge(left, right, how='left', left_on='Words', right_on='Prefix', suffixes=('', '.1')) 
    Words Words.1 Prefix 
0 One One Fish One 
1 One One Day One 
2 Two Two Fish Two 
3 Three  NaN NaN 
4 Four Four Men Four 
5 Five Five Men Five 
+0

헤이 베 자드는, 실제로 하나의 단어에있는 두 개의 데이터 프레임을 병합에 대해 생각 나는 첫 번째 프레임 left와 두 번째 프레임 right를 호출하고 있습니다. 안타깝게도 원래 데이터 프레임에서 개체가 고유하게 평가되지 않았으므로 다시 색인 할 수 없습니다. 즉, '1'로 시작하는 두 번째 데이터 프레임에 두 개 이상의 구가 있습니다. – user3682157

+0

@ user3682157 여러 개의 일치 항목이있는 팬더 왼쪽 분기가 [this pull request] (https://github.com/pydata/pandas/pull/7853)를 통해 고정 된 경우 만약 당신이 master 브랜치를 가지고 있지 않다면, 마지막 행에'how = 'outer''를 지정하고, 첫번째 열에 null 인 행을 드롭하거나,'pd.merge'를 사용하십시오. –

+0

@ user3682157 수정 사항보기 –

관련 문제