Python 여러개 DataFrame 인덱스 기준 합치기 merge 사용 방법

여러개 DataFrame을 결합하기 위해서 pandas.merge() 또는 pandas.DataFrame의 merge() 메서드를 사용합니다.

merge를 사용해 DataFrame를 결합하는 경우 열의 컬럼명을 지정하거나 인덱스를 기준으로 결합할 수 있습니다.

이번에는 인덱스를 기준으로 DataFrame을 결합하는 방법을 알아보겠습니다.

DataFrame 컬럼명을 지정해 결합하는 방법은 아래를 참조해주세요.

pandas.merge() 함수 또는 pandas.DataFrame의 merge() 메서드에 인덱스를 지정해 결합하는 기본적인 내용을 먼저 보겠습니다.

  • 인덱스를 키로 지정: left_index, right_index

 

left_index, right_index

인덱스를 키로 지정해 DataFrame을 결합하는 경우에는 merge()에 파라미터로 left_index, right_index를 지정합니다.

설정값을 True를 지정합니다.

import pandas as pd

df_ab = pd.DataFrame({'a': ['a_1', 'a_2', 'a_3'], 'b': ['b_1', 'b_2', 'b_3']})
df_ab = df_ab.set_index(['a'])

df_ac = pd.DataFrame({'a': ['a_1', 'a_2', 'a_4'], 'c': ['c_1', 'c_2', 'c_4']})

# 변수 df_ab DataFrame 샘플데이터
#        b
# a       
# a_1  b_1
# a_2  b_2
# a_3  b_3

# 변수 df_ac DataFrame 샘플데이터
#      a    c
# 0  a_1  c_1
# 1  a_2  c_2
# 2  a_4  c_4

print(pd.merge(df_ab, df_ac, right_on='a', left_index=True))

 

결과

      b    a    c
 0  b_1  a_1  c_1
 1  b_2  a_2  c_2

 

샘플에서는 변수 df_ab에만 인덱스가 걸려있습니다.

결합 조건은 변수 df_ac의 a컬럼을 df_ab 인덱스와 결합하도록 지정했습니다.

결합하려는 DataFrame에 양쪽 모두 인덱스가 걸려있어도 merge() 사용할 수 있습니다.

import pandas as pd

df_ab = pd.DataFrame({'a': ['a_1', 'a_2', 'a_3'], 'b': ['b_1', 'b_2', 'b_3']})
df_ab = df_ab.set_index(['a'])

df_ac = pd.DataFrame({'a': ['a_1', 'a_2', 'a_4'], 'c': ['c_1', 'c_2', 'c_4']})
df_ac = df_ab.set_index(['a'])

# 변수 df_ab DataFrame 샘플데이터
#        b
# a       
# a_1  b_1
# a_2  b_2
# a_3  b_3

# 변수 df_ac DataFrame 샘플데이터
#        c
# a       
# a_1  c_1
# a_2  c_2
# a_4  c_4


print(pd.merge(df_ab, df_ac,left_index=True, right_index=True))

 

결과

        b    c
 a            
 a_1  b_1  c_1
 a_2  b_2  c_2

 

변수 df_ab와 df_ac의 인덱스를 키로 DataFrame이 결합됐습니다.

양쪽 모두 인덱스로 결합하는 경우에는 left_on, right_on를 지정하지 않아도 결합이 됩니다.

댓글