pd.merge๋Š” ๊ณตํ†ต์˜ ์—ด์„ ๊ธฐ์ค€์œผ๋กœ ๋‘ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์„ ํ•ฉ์ณ์ค€๋‹ค.

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: ๊ธฐ์ค€์—ด ์ด๋ฆ„์ด ๋‹ค๋ฅผ ๋•Œ, ์˜ค๋ฅธ์ชฝ ๊ธฐ์ค€์—ด


์˜ˆ์‹œ

# ์˜ˆ์‹œ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
students = pd.DataFrame({'Num':[4, 14, 7, 11, 10], 'students':['์ฑ„์น˜์ˆ˜', '์ •๋Œ€๋งŒ', '์†กํƒœ์„ญ', '์„œํƒœ์›…', '๊ฐ•๋ฐฑํ˜ธ']})
grade = pd.DataFrame({'Num':[14, 11, 12], 'Grade':['A', 'B', 'C']})

students๊ณผ 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 = '์˜ค๋ฅธ์ชฝ ์—ด')

 

 

+ Recent posts