2015-01-30 6 views
23

DataFrame A에서 DataFrame A를 내부 조인하려고 시도하는 중 오류가 발생했습니다. (그들이 진정으로 그들이 "주문"없습니다?) 나는 열 순서 문제 모르겠어요Python Pandas 내부 조인

ValueError: len(left_on) must equal the number of levels in the index of "right" 

:

여기 내 가입 문의 :

merged = DataFrameA.join(DataFrameB, on=['Code','Date']) 

그리고 여기에 오류 발생 하지만 단지 경우, DataFrames은 다음과 같이 구성되어 있습니다

DataFrameA: Code, Date, ColA, ColB, ColC, ..., ColG, ColH (shape: 80514, 8 - no index) 
DataFrameB: Date, Code, Col1, Col2, Col3, ..., Col15, Col16 (shape: 859, 16 - no index) 

이 내 문에 가입 수정해야합니까? 아니면이 두 DataFrames의 교차 (또는 내부 결합)를 얻는 다른 방법이 있습니까?

+0

그냥 뭔가를 가입

pd.merge(df1, df2, on='column_name', how='left') 

에 참여, 기술적으로 그 문제에 대한 모든 DFS와 시리즈와 패널 인덱스를해야합니다, 그것은하지 않을 수 있습니다 당신이 설정 한 하나가 되겠지만 항상 0에서 시작하는 아마도 int64 일 것입니다. – EdChum

+0

완전히 옳습니다. 나는 그 방법을 간결하게 말하는 방법을 모르겠습니다. 표준 색인? 기본 색인? –

답변

27

사용 merge 인덱스에 가입되어 있지 않은 경우 :

merged = pd.merge(DataFrameA,DataFrameB, on=['Code','Date']) 

아래 질문 후속 :이 결과

import pandas as pd 
# create some timestamps for date column 
i = pd.to_datetime(pd.date_range('20140601',periods=2)) 

#create two dataframes to merge 
df = pd.DataFrame({'code': ['ABC','EFG'], 'date':i,'col1': [10,100]}) 
df2 = pd.DataFrame({'code': ['ABC','EFG'], 'date':i,'col2': [10,200]}) 

#merge on columns (default join is inner) 
pd.merge(df, df2, on =['code','date']) 

은 다음과 같습니다

가 복제 예입니다 :

code col1 date col2 
0 ABC  10  2014-06-01 10 
1 EFG  100  2014-06-02 200 

이 코드를 실행하면 어떻게됩니까?

+0

병합에는 조인 유형에 대한 인수가 있습니다. 방법 : { '왼쪽', '오른쪽', '외부', '내부'}, 기본값 '내부' – flyingmeatball

7

여기에 join을 수행하는 또 다른 방법이 있습니다. 확인 된 답변과 달리 다른 모든 유형의 가입에 적용되는보다 일반적인 대답입니다.

내부에 참여

inner joinhow에 다음과 같이 명시 적으로 언급에 의해 수행 될 수있다 : 다른 유형의

pd.merge(df1, df2, on='column_name', how='inner') 

같은 방법론 aplies 가입 :

outerjoin에를

,210
pd.merge(df1, df2, on='column_name', how='outer') 

왼쪽 오른쪽 지적

pd.merge(df1, df2, on='column_name', how='right')