본문 바로가기

[Python] 데이터프레임 합치기 :: pd.merge()

Python/Pandas 2020. 10. 13.

반응형

pd.merge는 공통의 열을 기준으로 두 데이터프레임을 합쳐준다. sql에서 join과 같은 역할이다.

 

import pandas as pd


# 기준열 이름이 같을 때
pd.merge(left, right, on = '기준열', how = '조인방식')

# 기준열 이름이 다를 때
pd.merge(left, right, left_on = '왼쪽 열', right_on = '오른쪽 열', how = '조인방식')

left : 왼쪽 데이터프레임

right : 오른쪽 데이터프레임

on : (두 데이터프레임의 기준열 이름이 같을 때) 기준열

how : 조인 방식 {'left', 'right', 'inner', 'outer'} 기본값은 'inner'

 

left_on : 기준열 이름이 다를 때, 왼쪽 기준열

right_on : 기준열 이름이 다를 때, 오른쪽 기준열


예시 데이터 생성

fruit = pd.DataFrame({'Num':[123, 456, 789, 1011, 1112], 'Fruit':['Apple', 'Banana', 'Cherry', 'Lemon', 'Peach']})
grade = pd.DataFrame({'Num':[123, 789, 1314], 'Grade':['A', 'B', 'C']})

 

fruit과 grade는 Num을 공통의 열로 가진 데이터프레임이다.

Num을 기준으로 두 데이터프레임을 합쳐보려 한다.

 

 

1. how = JOIN 방식

 

 

Left Join

: 왼쪽 데이터프레임을 기준으로 조인한다. 오른쪽 데이터프레임에 없는 값은 NaN으로 나타난다.

pd.merge(left, right, on = 'col', how = 'left')

 

 

Right Join

: 오른쪽 데이터프레임을 기준으로 조인한다. 왼쪽 데이터프레임에 없는 값은 NaN으로 나타난다.

pd.merge(left, right, on = 'col', how = 'right')

 

 

Inner Join

: 교집합을 의미한다. 양쪽에 공통으로 있는 값만 나타난다. 

pd.merge(left, right, on = 'col', how = 'inner')

 

 

Outer Join

: 모든 값이 나타나도록 한다. 왼쪽 데이터프레임과 오른쪽 데이터프레임에 없는 값들은 NaN으로 나타난다.

pd.merge(left, right, on = 'col', how = 'outer')

 

 

2. on = '기준열'

공통이 되는 기준 열이 여러 개일 때

pd.merge(left, right, on = ['col1', 'col2'])

 

 

두 데이터프레임의 열 이름이 다를 때

위 예시처럼 양쪽 데이터프레임에서 merge의 기준이 되는 열의 이름이 같다면 on = '기준열'로 지정해주면 된다. 하지만 양쪽 데이터프레임에서 기준이 되는 열의 이름이 다르다면 각각 left_on = '왼쪽 열', right_on = '오른쪽 열'로 지정하면 된다.

pd.merge(left, right, left_on = '왼쪽 열', right_on = '오른쪽 열')

 

 

 

Reference

 

 

 

728x90

Comments