[Pandas] 데이터 프레임(DataFrame) 합치기 - merge
목표
: 두 개 이상의 데이터프레임을 합치는 merge, concat 중 merge에 대해 알아본다.
1. merge 함수
merge 함수는 두 데이터 프레임의 공통된 칼럼(Column) 또는 인덱스(Index) 를 기준으로 합치는 방식이다. 이때 합치는 방법에는 Inner, Left, right, outer 가 존재하며 데이터의 형태를 잘 고려하여 적절한 merge 방식을 선택해야한다.
- Inner : 두 데이터프레임에 모두 존재하는 데이터만 결합
- Left : 왼쪽 데이터프레임을 기준으로 데이터 결합
- Right : 오른쪽 데이터프레임을 기준으로 데이터 결합
- Outer : 두 데이터프레임의 모든 데이터를 결합
(1) 예시로 이해하기
아래의 두 데이터프레임은 merge 함수를 이해하기 위해 임의로 생성한 것이다. 예시 테이블은 고객별 배달 주문 정보가 포함되어있다.
# 첫 번째 데이터프레임
df1 = pd.DataFrame({'고객ID': [10001, 10002, 10003, 10004, 10005],
'주문일자': ['2023-05-01', '2023-05-01', '2023-05-03', '2023-05-04', '2023-05-21'],
'주문금액': [15000, 17900, 20000, 5000, 34900]})
# 두 번째 데이터프레임
df2 = pd.DataFrame({'고객ID': [10001, 10002, 10003, 10004, 10005],
'지역': ['서울', '강원', '부산', '대전', '경북']})
위 두 데이터프레임을 고객ID를 기준으로 merge 하면 아래와 같다.
pd.merge(df1, df2)
위에 작성된 코드의 실행 결과는 df1.merge(df2)
와 동일하다.
임의로 만든 두 테이블에는 공통된 열(고객ID)의 값이 동일하게 존재하기 때문에 INNER JOIN(default)이 이루어져도 모든 값이 다 나온다. 만약 한쪽에는 모든 정보가 다 있지만 다른 한쪽에는 정보가 드문드문 있다면 상황에 맞는 merge 방식을 선택하면 된다. merge 방식은 인수로 how=""
를 전달하면 된다. 그리고 특정 컬럼을 기준으로 결합을 할 때, 그 기준은 on=""
으로 전달하면 된다.
cf. 기준 열이 아닌 컬럼들 중 컬럼명이 동일하다면 컬럼명 뒤에 _x, _y의 접미사가 붙는다.
만약 merge의 기준이 되는 컬럼명이 다르다면 left_on=""
, right_on=""
으로 각 컬럼명을 전달하면 된다.
2. Reference
👩🏻💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.
댓글남기기