본문 바로가기
Python/Basic Data Analysis

[Python] 데이터프레임 병합 (.merge)

by JKyun 2017. 11. 28.

안녕하세요. 우주신 입니다.


이번에는 pandas의 merge()를 이용해 데이터프레임끼리 병합하는 방법에 대해 알아보겠습니다.


우선, import pandas as pd를 통해 pandas를 가져왔습니다.

지난 포스팅의 데이터프레임 결합에서 이용했던 데이터프레임을 그대로 쓰겠습니다.


df1과 df2는 인덱스만 다를 뿐 값이 다 같고, 

df3는 df1과 달리 3번째 열이 'Color_Num'입니다.




1. pd.merge(데이터프레임, 데이터프레임)


인덱스만 다르고 값이 같은 df1과 df2를 병합 시켜보겠습니다. 


위의 출력 결과를 보면, 인덱스와 상관 없이 병합이 되고, 같은 값들은 중복 표기가 되지 않습니다. 



2. pd.merge(데이터프레임, 데이터프레임, on = ' ')


이번에는 특정 열을 지정하여 그 열을 기준으로 병합 했습니다.

pd.merge()의 on = '열 이름' 을 입력하면 됩니다.


'Year'를 기준으로 병합한 결과, Year 열 외에는 데이터가 다 중복으로 표기되었습니다.


'Year'와 'Beer_Code'를 기준으로 병합하면,


기준 열 외에 'Price' 열의 데이터들이 중복으로 표기된 것을 확인할 수 있습니다.


좀 더 깔끔하게 'Year'를 인덱스로 설정하여 데이터프레임을 정리해보겠습니다.

inplace = True 를 입력해야 데이터프레임이 실제로 바뀝니다.



이번에는 하나의 열이 다르고 데이터가 서로 다른 df1과 df3를 병합 해보겠습니다.


그 결과, 서로 같이 공유하는 열 'Beer_Code', 'Year'의 데이터가 같은 행만 병합된 것을 확인할 수 있습니다.


'Year'를 기준으로 병합을 하면,


'Year'의 데이터가 같은 행들을 기준으로 병합이 됩니다.

'Price'와 'Color_Num'의 경우 서로 열을 공유하고 있지 않지만 'Beer_Code'는 공유하고 있기에 데이터가 중복 표기 되었습니다.



3. pd.merge(데이터프레임, 데이터프레임, on = ' ', how = ' ')


how = 'outer' / how = 'inner' 기능을 이용해보겠습니다.


how = 'outer'는 기준 열 'Year'의 데이터의 중복 여부와 상관 없이 모두 출력합니다.

how = 'inner'를 입력하면 중복된 데이터의 행만 출력되는 것을 확인할 수 있습니다.


how = 'left' / how = 'right' 기능을 이용해보겠습니다.


말 그대로 left는 df1의 'Year'를 기준으로, right는 df3의 'Year'를 기준으로 병합하라는 뜻입니다.

위의 결과를 보면 df1의 'Year'를 기준으로 병합된 것을 확인할 수 있습니다.




댓글