8일차 python 데이터분석2

차지예·2025년 5월 22일

생성AI

목록 보기
8/56
post-thumbnail

Merge VS Join

➡️공통점

공통점설명
병합 기능두 개의 DataFrame을 병합 (SQL의 JOIN처럼 동작)
how 옵션 사용inner, left, right, outer 지원
기준 지정 가능특정 key를 기준으로 병합 가능

📌 merge() — SQL JOIN과 가장 유사

기본 개념

  • 열(column) 기준으로 병합함
  • 병합 기준이 되는 열 이름을 on, left_on, right_on 으로 명시함

주요 옵션

옵션설명
on두 DataFrame에 모두 있는 열 기준 병합
left_on, right_on각 DataFrame에서 다른 열을 기준으로 병합
howinner, left, right, outer (기본값은 inner)
suffixes열 이름 충돌 시 붙일 접미사 설정

기본 on 병합

df1 = pd.DataFrame({'id': [1, 2], 'name': ['영희', '철수']})
df2 = pd.DataFrame({'id': [1, 2], 'score': [95, 88]})

pd.merge(df1, df2, on='id')
indexidnamescore
01영희95
12철수88

how='outer' 병합

df1 = pd.DataFrame({'id': [1, 2], 'name': ['영희', '철수']})
df2 = pd.DataFrame({'id': [2, 3], 'score': [88, 77]})

pd.merge(df1, df2, on='id', how='outer')
indexidnamescore
01영희NaN
12철수88.0
23NaN77.0

서로 다른 열 기준 병합 (left_on, right_on)

df1 = pd.DataFrame({'name': ['영희', '철수'], 'class_id': [1, 2]})
df2 = pd.DataFrame({'group': [1, 2], 'score': [90, 80]})

pd.merge(df1, df2, left_on='class_id', right_on='group', how='left'

📌join() — 인덱스를 기준으로 병합

기본 개념

  • 인덱스(index) 를 기준으로 병합
  • on 파라미터를 명시하면 열 기준으로도 가능하지만, 보통은 인덱스 기반 병합용

주요 옵션

옵션설명
howleft, right, outer, inner (기본: left)
on인덱스 대신 특정 열 기준으로 병합할 수도 있음
lsuffix, rsuffix열 이름이 중복될 때 접미사 지정

인덱스 기준 병합
df1 = pd.DataFrame({'name': ['영희', '철수']}, index=['a', 'b'])
df2 = pd.DataFrame({'score': [90, 80]}, index=['a', 'c'])

df1.join(df2, how='outer')
namescore
a영희90
b철수NaN
cNaN80

열을 기준으로 병합 (on 사용)

df1 = pd.DataFrame({'id': [1, 2], 'name': ['영희', '철수']})
df2 = pd.DataFrame({'id': [1, 2], 'score': [90, 88]})

df1.set_index('id').join(df2.set_index('id'))
idnamescore
1영희90
2철수88

➡️merge 랑 join의 차이점

상황추천 메서드이유
열 기준 병합merge()SQL처럼 열을 키로 지정 가능
인덱스 기준 병합join()더 간단하고 직관적
서로 다른 기준 열merge()left_on, right_on 등 유연하게 사용 가능
여러 조건으로 병합merge()다중 key 지원 (on=['a','b'])

0개의 댓글