logo

[python-ds] 판다스: 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
keyAB
0K0A0B0
1K1A1B1
2K3A3B3
right
keyCD
0K0C0D0
1K2C2D2
2K3C3D3
pd.merge(left, right)
keyABCD
0K0A0B0C0D0
1K3A3B3C3D3
pd.merge(left, right, on='key')
keyABCD
0K0A0B0C0D0
1K3A3B3C3D3
pd.merge(left, right, left_on='key', right_on='key')
keyABCD
0K0A0B0C0D0
1K3A3B3C3D3
pd.merge(left, right, how='inner')
keyABCD
0K0A0B0C0D0
1K3A3B3C3D3
pd.merge(left, right, how='outer')
keyABCD
0K0A0B0C0D0
1K1A1B1NaNNaN
2K3A3B3C3D3
3K2NaNNaNC2D2
pd.merge(left, right, how='left')
keyABCD
0K0A0B0C0D0
1K1A1B1NaNNaN
2K3A3B3C3D3
pd.merge(left, right, how='right')
keyABCD
0K0A0B0C0D0
1K3A3B3C3D3
2K2NaNNaNC2D2
 

실습

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

Previous
판다스: 데이터 합치기