2017-11-27 2 views
0

두 개의 pandas.dataframes df1df2이 있습니다. 색인 중 일부는 동일합니다. 그 색인을 찾아서 해당 행을 새로운 데이터 프레임에 결합하고 싶습니다.두 데이터 프레임간에 동일한 인덱스를 찾고이를 새로운 데이터 프레임, Python 3에 결합하는 방법

df1 = 
     A B 
Name 
apple 1 5 
orange 2 6 
banana 3 7 


df2 = 
     A B 
Name 
apple -1 10 
audi -2 11 
bmw  0 12 
banana 2 8 
vw  -3 6 

원하는 새 데이터 프레임은 다음과 같습니다. 1) 동일한 인덱스의 행을 찾습니다. 2) 열 'A'에서 해당 행의 평균값을 계산하십시오. df1df2 모두 인덱스를 applebanana을 가지고 있기 때문에

df_new = 
     A_average 
Name 
apple 0 
banana 2.5 

입니다. 열 'A'의 apple의 평균값은 (1-1)/2=0이고 열 'A'의 평균값은 banana이고 값은 (3+2)/2=2.5입니다.

이것을 달성하기 위해 Python3을 사용하는 방법을 알고 있습니까? 제 실제 응용 프로그램에서는 위에 보여준 예제보다 더 많은 행이있을 수 있습니다.

감사합니다.

답변

1

옵션 1
당신은 열에 의해 두 dataframes 및 그룹을 연결할 수 있습니다. 그냥 당신이 원하는 A의 경우,이 충분해야

pd.concat([df1, df2], 1).dropna().mean(axis=1, level=0) 

      A B 
apple 0.0 7.5 
banana 2.5 7.5 

-

pd.concat([df1, df2], 1).dropna()['A'].mean(axis=1, level=0) 

      A 
apple 0.0 
banana 2.5 

옵션 2
대안은 locindex.intersection 및 인덱스 교차 인덱스를 찾을 것 -

i = df1.index.intersection(df2.index) 

df1.loc[i, ['A']].add(df2.loc[i, ['A']]).div(2) 

      A 
Name  
apple 0.0 
banana 2.5