2017-01-17 1 views
-1

왜 이렇게 혼란 스러울 지 모르겠다. 나는 두 개의 데이터 프레임을 결합하려고 시도하고 있으며, 두 인덱스가 같은 인덱스를 공유하고있다. (노트로도 같은 순서가 아닐지라도).동일한 인덱스 (순서가 없음)로 두 개의 데이터 프레임 결합

df1 = |firstrow 10| 
     |secondrow 15| 

df2 = |secondrow 115| 
     |firstrow 1000| 

나는 결과 dataframe이 원하는는 :

result = |firstrow 10 1000| 
     |secondrow 15 115| 

나는이 일을 시도 :

df = pd.merge(df1,df2, on="INDEXNAME"), but it throws a KeyError on INDEXNAME 

감사합니다!

+1

는 [mcve] –

+0

나타냈다 그것을 추가하십시오 - df1.join (DF2). 자동으로 색인을 사용한다 – keynesiancross

+1

'pd.merge (df1, df2, left_index = True, right_index = True)'를 사용하면'pd.join'과 같은 결과를 얻을 수있다. –

답변

1

나는 (참여 기본 외부로) 당신이 concat 사용할 수 있다고 생각 : 매개 변수 left_indexright_index

df = pd.concat([df1, df2], axis=1, join='inner') 

또는 merge (기본 inner으로 참여) : 내부해야하는 경우

df = pd.concat([df1, df2], axis=1) 

그리고

가입 :

df = pd.merge(df1, df2, left_index=True, right_index=True) 

샘플 :

df1 = pd.DataFrame({'a':[10,15]}, index=['firstrow','secondrow']) 
df2 = pd.DataFrame({'b':[115,1000]}, index=['secondrow','firstrow']) 
print (df1) 
      a 
firstrow 10 
secondrow 15 

print (df2) 
       b 
secondrow 115 
firstrow 1000 

print (pd.concat([df1, df2], axis=1)) 
      a  b 
secondrow 15 115 
firstrow 10 1000 

print (pd.merge(df1, df2, left_index=True, right_index=True)) 
      a  b 
secondrow 15 115 
firstrow 10 1000 
관련 문제