판다스: DB에서처럼 조인하기 :: Python 빅데이터 처리와 시각화 - mindscale
Skip to content

판다스: DB에서처럼 조인하기

merge를 이용해 DB에서처럼 조인(join)하기

left = pd.DataFrame({'key': ['K0', 'K1',  'K3'],
                     'A': ['A0', 'A1', 'A3'],
                     'B': ['B0', 'B1',  'B3']})

right = pd.DataFrame({'key': ['K0',  'K2', 'K3'],
                      'C': ['C0',  'C2', 'C3'],
                      'D': ['D0',  'D2', 'D3']})
left
key A B
0 K0 A0 B0
1 K1 A1 B1
2 K3 A3 B3
right
key C D
0 K0 C0 D0
1 K2 C2 D2
2 K3 C3 D3
pd.merge(left, right)
key A B C D
0 K0 A0 B0 C0 D0
1 K3 A3 B3 C3 D3
pd.merge(left, right, on='key')
key A B C D
0 K0 A0 B0 C0 D0
1 K3 A3 B3 C3 D3
pd.merge(left, right, left_on='key', right_on='key')
key A B C D
0 K0 A0 B0 C0 D0
1 K3 A3 B3 C3 D3
pd.merge(left, right, how='inner')
key A B C D
0 K0 A0 B0 C0 D0
1 K3 A3 B3 C3 D3
pd.merge(left, right, how='outer')
key A B C D
0 K0 A0 B0 C0 D0
1 K1 A1 B1 NaN NaN
2 K3 A3 B3 C3 D3
3 K2 NaN NaN C2 D2
pd.merge(left, right, how='left')
key A B C D
0 K0 A0 B0 C0 D0
1 K1 A1 B1 NaN NaN
2 K3 A3 B3 C3 D3
pd.merge(left, right, how='right')
key A B C D
0 K0 A0 B0 C0 D0
1 K3 A3 B3 C3 D3
2 K2 NaN NaN C2 D2

실습

UFC 시합 데이터에서 선수 이름을 key로 이용하여 fighter.csv와 합쳐보세요. (주의: 한 시합에 선수는 R, B 두 명씩 있습니다.)