목표
: 두 개 이상의 데이터프레임을 합치는 merge, concat 중 merge에 대해 알아본다.

1. merge 함수

merge 함수는 두 데이터 프레임의 공통된 칼럼(Column) 또는 인덱스(Index) 를 기준으로 합치는 방식이다. 이때 합치는 방법에는 Inner, Left, right, outer 가 존재하며 데이터의 형태를 잘 고려하여 적절한 merge 방식을 선택해야한다.

이미지 출처: https://j-jae0.github.io/sql/sql-02/


  • 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], 
                    '지역': ['서울', '강원', '부산', '대전', '경북']})
df1(왼쪽), df2(오른쪽)


위 두 데이터프레임을 고객ID를 기준으로 merge 하면 아래와 같다.

pd.merge(df1, df2)

위에 작성된 코드의 실행 결과는 df1.merge(df2)와 동일하다.

df1와 df2의 merge 결과물


임의로 만든 두 테이블에는 공통된 열(고객ID)의 값이 동일하게 존재하기 때문에 INNER JOIN(default)이 이루어져도 모든 값이 다 나온다. 만약 한쪽에는 모든 정보가 다 있지만 다른 한쪽에는 정보가 드문드문 있다면 상황에 맞는 merge 방식을 선택하면 된다. merge 방식은 인수로 how=""를 전달하면 된다. 그리고 특정 컬럼을 기준으로 결합을 할 때, 그 기준은 on=""으로 전달하면 된다.
cf. 기준 열이 아닌 컬럼들 중 컬럼명이 동일하다면 컬럼명 뒤에 _x, _y의 접미사가 붙는다.

만약 merge의 기준이 되는 컬럼명이 다르다면 left_on="", right_on="" 으로 각 컬럼명을 전달하면 된다.

2. Reference

👩🏻‍💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.

태그:

카테고리:

업데이트:

댓글남기기