데이터 분석 작업을 하다 보면 서로 다른 두 개의 데이터프레임을 하나의 공통 열(키)을 기준으로 합쳐야 하는 경우가 자주 발생합니다. 이번 글에서는 pandas의 merge() 함수를 사용하여 동일한 열 값을 가진 행들만 병합하는 방법을 알아보겠습니다.
문제 상황
다음과 같은 두 개의 데이터프레임이 있다고 가정해 보겠습니다.
첫 번째 데이터프레임 id country 0 1 India 1 2 UK 2 3 US 3 4 China 두 번째 데이터프레임 id City 0 1 Chennai 1 11 Cambridge 2 22 Chicago 3 4 Chengdu
공통 열인 id를 기준으로 병합하면, 두 데이터프레임에 모두 존재하는 id 값(1, 4)만 결과에 포함됩니다.
id 열을 기준으로 병합한 결과 id country City 0 1 India Chennai 1 4 China Chengdu
해결 방법
이 문제는 아래 단계를 따라 해결할 수 있습니다.
두 개의 데이터프레임을 정의합니다.
pandas의
merge()함수를 사용하여 공통 열id를 기준으로 두 데이터프레임을 병합합니다.
pd.merge(first_df, second_df, how='inner', on='id')
여기서 how='inner'는 내부 조인(inner join) 방식을 의미하며, 양쪽 데이터프레임에 모두 존재하는 키 값만 결과로 반환합니다.
예제 코드
아래 예제를 통해 실제 구현 과정을 더 자세히 이해해 보겠습니다.
import pandas as pd
import numpy as np
first_df = pd.DataFrame({'id':[1,2,3,4], 'country':['India','UK','US','China']})
print("first dataframe is\n", first_df)
second_df = pd.DataFrame({'id':[1,11,22,4], 'City':['Chennai','Cambridge','Chicago','Chengdu']})
print("second dataframe is\n", second_df)
print("Merging data based on same column - id")
print(pd.merge(first_df, second_df, how='inner', on='id'))실행 결과
first dataframe is id country 0 1 India 1 2 UK 2 3 US 3 4 China second dataframe is id City 0 1 Chennai 1 11 Cambridge 2 22 Chicago 3 4 Chengdu Merging data based on same column - id id country City 0 1 India Chennai 1 4 China Chengdu
정리
pd.merge() 함수에서 on 매개변수로 기준이 될 열을 지정하고, how 매개변수로 조인 방식을 설정하면 됩니다. 'inner' 외에도 'left', 'right', 'outer' 등의 옵션을 사용하면 한쪽 데이터프레임의 모든 행을 유지하거나 모든 키 값을 포함하는 등 다양한 방식의 병합이 가능합니다. 상황에 맞는 조인 방식을 선택하여 데이터를 효율적으로 통합해 보세요.