2016-12-14 2 views
1

merge를 사용하여 아래 2 개의 테이블을 결합하려고합니다. 주요 테이블은 다음과 같습니다. 접합 남겨 지도록 python pandas - left join join

print(MbrKPI3.head()) 

enter image description here

이하이다.

enter image description here

아래를

print(df5.head()) 

은 아래의 오류,

MbrKPI4=pd.merge(MbrKPI3, df5,how='left',on='Loyalty Card No_') 

그러나이 작동하지 않는 기본 키 'No_ 로열티 카드'를 사용, 병합 코드입니다. 누군가 조언 할 수 있습니까? 감사! 당신은 매개 변수 left_indexright_indexmerge 필요

KeyError: 'Loyalty Card No_' 

답변

0

:

MbrKPI4=pd.merge(MbrKPI3, df5,how='left',left_index=True, right_index=True) 

뿐만 아니라 작동 join은 가입 왼쪽 기본입니다 :

MbrKPI4=MbrKPI3.join(df5) 

샘플 :

MbrKPI3 = pd.DataFrame({'B':[4,5,6], 
        'C':[7,8,9]}, 
        index=[1,2,3]) 
MbrKPI3.index.name = 'Loyalty Card No_' 
print (MbrKPI3) 
        B C 
Loyalty Card No_  
1     4 7 
2     5 8 
3     6 9 

df5 = pd.DataFrame({'E':[4,5,6]}, 
        index=[1,2,3]) 

df5.index.name = 'Loyalty Card No_' 
print (df5) 
        E 
Loyalty Card No_ 
1     4 
2     5 
3     6 
MbrKPI4=pd.merge(MbrKPI3, df5,how='left',left_index=True, right_index=True) 
print (MbrKPI4) 
       B C E 
Loyalty Card No_   
1     4 7 4 
2     5 8 5 
3     6 9 6 

MbrKPI4=MbrKPI3.join(df5) 
print (MbrKPI4) 
       B C E 
Loyalty Card No_   
1     4 7 4 
2     5 8 5 
3     6 9 6 
+0

jezrael 답장을 보내 주셔서 감사합니다. 왜 두 사람이 합류하기 위해 열 이름 (충성도 카드 번호)을 지정할 수 없는지 아십니까? – unclegood

+0

컬럼이 아니기 때문에 인덱스하지만'df5.index'를 확인하십시오. – jezrael