여러개 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를 지정하지 않아도 결합이 됩니다.
댓글