고급 병합 및 결합
시간 기반 결합을 위해 how, on, left_on/right_on, suffixes와 함께 pd.merge() 및 merge_asof를 사용합니다.
고급 병합 및 결합은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
DataFrames 결합
pd.merge는 공유 키를 기준으로 두 DataFrames를 결합하며, SQL JOIN과 정확히 같은 방식입니다. 관계형 데이터 작업을 위해 how 옵션을 익히는 것이 필수적입니다.
import pandas as pd
left = pd.DataFrame({"id": [1, 2, 3], "name": ["a", "b", "c"]})
right = pd.DataFrame({"id": [2, 3, 4], "score": [90, 80, 70]})내부 조인(기본값)
how="inner"는 BOTH 데이터 프레임에 존재하는 키만 유지합니다. 기본값입니다.
print(pd.merge(left, right, on="id", how="inner"))
# id name score
# 0 2 b 90
# 1 3 c 80왼쪽 조인
how="left"는 왼쪽 데이터 프레임의 모든 행을 유지하며, 일치하지 않는 오른쪽 열은 NaN이 됩니다. 분석에서 가장 흔히 사용하는 조인입니다.
print(pd.merge(left, right, on="id", how="left"))
# id name score
# 0 1 a NaN
# 1 2 b 90.0
# 2 3 c 80.0외부 조인
how="outer"는 양쪽의 모든 키를 유지하고, 빈 부분을 NaN으로 채웁니다. 레코드 전체의 합집합을 확인할 때 사용합니다.
print(pd.merge(left, right, on="id", how="outer"))
# includes id 1 (no score) and id 4 (no name)서로 다른 열 이름으로 조인하기
키 열의 이름이 서로 다르면 on 대신 left_on과 right_on을 사용합니다.
r2 = right.rename(columns={"id": "user_id"})
print(pd.merge(left, r2, left_on="id", right_on="user_id"))겹치는 열을 위한 접미사
두 데이터 프레임에 키가 아닌 동일한 이름의 열이 있으면 pandas가 _x와 _y를 붙입니다. 명확하게 표시하려면 suffixes로 재정의할 수 있습니다.
a = pd.DataFrame({"id": [1], "val": [10]})
b2 = pd.DataFrame({"id": [1], "val": [99]})
print(pd.merge(a, b2, on="id", suffixes=("_old", "_new")))indicator 열
indicator=True를 사용하면 각 행의 출처를 보여 주는 _merge 열이 추가됩니다. 출처는 왼쪽에만 있음, 오른쪽에만 있음, 또는 양쪽에 있음으로 표시됩니다. 조인을 감사할 때 매우 유용합니다.
print(pd.merge(left, right, on="id", how="outer", indicator=True))
# _merge tells you where each row came from조인 문제 진단
indicator를 기준으로 필터링하면 일치하지 않는 키를 빠르게 찾을 수 있습니다. 이는 데이터가 조용히 누락되는 흔한 원인입니다.
m = pd.merge(left, right, on="id", how="outer", indicator=True)
print(m[m["_merge"] != "both"]) # rows that did not match시간 조인을 위한 merge_asof
pd.merge_asof는 정확히 일치하는 키가 아니라 가장 가까운 키를 기준으로 결합합니다. 각 거래를 직전에 나온 최신 호가와 연결하는 것처럼 시계열을 정렬하는 데 특화되어 있습니다. 두 프레임 모두 키를 기준으로 정렬되어 있어야 합니다.
trades = pd.DataFrame({"time": [1, 3, 7], "price": [10, 11, 12]})
quotes = pd.DataFrame({"time": [0, 2, 5], "bid": [9, 10, 11]})
print(pd.merge_asof(trades, quotes, on="time"))merge_asof 방향
기본적으로 merge_asof는 BACKWARD를 확인합니다(해당 키보다 작거나 같은 키 중 가장 최신 키). direction="forward" 또는 "nearest"를 사용하면 일치 규칙을 변경할 수 있습니다.
print(pd.merge_asof(trades, quotes, on="time", direction="nearest"))적절한 조인 선택하기
일치하는 항목만 유지하려면 내부 조인을, 기본 테이블을 보강하려면 왼쪽 조인을, 전체 합집합이 필요하면 외부 조인을, 시간에 맞춘 근사 키 조인에는 merge_asof를 사용합니다.
확인 문제
조인 지식을 확인해 보십시오.
복습
병합 도구 모음:
how=의 내부 / 왼쪽 / 외부 설정으로 어떤 키를 유지할지 제어합니다- 키 열에는
on과left_on/right_on을 사용합니다 suffixes로 겹치는 이름을 구분합니다indicator=True로 행의 출처를 확인합니다- 가장 가까운 키를 기준으로 시간 조인을 할 때는
pd.merge_asof를 사용합니다(먼저 정렬해야 합니다)
자주 묻는 질문
“고급 병합 및 결합” 강의는 무료인가요?
네 — “고급 병합 및 결합” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.
“고급 병합 및 결합”에서 뭘 배우나요?
시간 기반 결합을 위해 how, on, left_on/right_on, suffixes와 함께 pd.merge() 및 merge_asof를 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“고급 병합 및 결합” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- GroupBy와 집계
- 피벗 테이블과 교차 집계
- 고급 병합 및 결합
- Pandas의 시계열