본문 바로가기
개발/Python

Pandas - 데이터 병합 (merge option, inner / left / right / outer)

by 피로물든딸기 2025. 8. 18.
반응형

전체 링크

 

DataFrame의 merge 옵션에 대한 결과를 비교해 보자.

import pandas as pd

# 직원 정보
df_employees = pd.DataFrame({
    'employee_id': [101, 102, 103, 104, 105, 106, 107, 108, 109, 110],
    'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve', 'Frank', 'Grace', 'Helen', 'Ian', 'Jane'],
    'dept_id': [1, 1, 2, 2, 3, 3, 4, None, 5, 5]
})

# 부서 정보
df_departments = pd.DataFrame({
    'dept_id': [1, 2, 3, 6],
    'dept_name': ['HR', 'Engineering', 'Marketing', 'Legal']
})

 

inner = 교집합

dept_id를 기준으로 모두 존재하는 데이터만 병합되었다. (dept_id == 1, 2, 3)

pd.merge(df_employees, df_departments, on='dept_id', how='inner')
pd.merge(df_departments, df_employees, on='dept_id', how='inner')

 

left = 왼쪽 우선

왼쪽 데이터는 변경되지 않고 오른쪽 데이터가 추가된다. 추가될 수 없는 데이터는 결측치(NaN)가 된다.

pd.merge(df_employees, df_departments, on='dept_id', how='left')
pd.merge(df_departments, df_employees, on='dept_id', how='left')

 

right = 오른쪽 우선

위와 반대

pd.merge(df_employees, df_departments, on='dept_id', how='right')
pd.merge(df_departments, df_employees, on='dept_id', how='right')

 

outer = 합집합

pd.merge(df_employees, df_departments, on='dept_id', how='outer')
pd.merge(df_departments, df_employees, on='dept_id', how='outer')

반응형

댓글