판다스의 데이터프레임을 다루다 보면 데이터프레임들끼리 합쳐서 하나의 데이터프레임을 만들 때가 많다. 이 때 데이터프레임의 컬럼, 로우가 다른 경우에는 어떻게 합쳐야 할까? 판다스는 이렇게 데이터프레임 합치기와 관련하여 3가지 함수를 제공하는 데 그것이 merge, join, concat 이다.
1. merge 메서드 (함수)
pd.merge(df1, df2, on='key', how='outer')
- on = '컬럼명' : 조인하려는 컬럼 이름
- how = 'outer' : 외부조인은 합집합인 결과를 반환
- how = 'innter' : 양쪽 테이블 모두에 존재하는 키 조합을 사용
2. join 메서드 (함수)
df1.join(df2, on='key')
- on = '컬럼명' : 조인하려는 컬럼 이름
- df1.joing(df2, df3, ...) 형태의 조인도 가능함
3. concat 메서드 (함수)
pd.concat([df1, df2, df3], axis=1)
pd.concat([s1, s2, s3], axis=1)
- concat 함수를 사용하는 이유는 index 가 다른 데이터를 '아래로' 이어붙이기 위해서이다. (axis=0)
- axis=1 로 옵션을 부여하는 경우 '옆으로' 이어붙이기도 가능하다.
- how= = 'inner' : 기본값은 how='outer' 이며
- pd.concat({'level1':df1, 'level2':df2}, axis=1) 와 같이 딕셔너리의 형태로도 합치는 것이 가능하다.
어떤 것을 써도 자신이 필요한 목적을 달성하면 된다. 나 같은 경우 merge 메서드를 우선해서 사용해보는 편이다. 실제로 데이터프레임을 결합할 때는 컬럼이 맞지 않는 경우도 많아 'inner' 옵션과 'outer' 옵션을 번갈아주면서 관찰한다. 누구나 한 번 쯤 만날 메서드이니 꼭 알고 있자.
댓글