본문 바로가기

STUDY/Python

[Pandas] concat()과 merge()의 차이

두 함수 모두, 여러개의 DataFrame(이하 df)을 하나로 합칠 때 사용하는, pandas에서 제공하는 함수다.

 

두 함수의 목적은 비슷해보일지 모르나, 중요한 차이점이 있다.

 

꼭 알고 사용하도록 하자.

 

1. concat([df1, df2, ...] axis)

concat()은, 데이터프레임을 "합친다" 보다는 "이어 붙인다"에 좀 더 가깝다.

 

백문이 불여일견, 직접 보도록 하자.

아래와 같이, df1과 df2라는 2개의 데이터프레임이 있다.

 

concat()을 사용해서 가로 방향으로 합쳐보자.

 

 ** axis 파라미터에는 1과 0이 들어갈 수 있다.
     0은 행을 의미한다. 좀 더 자세히는, 행이 전개되는 방향, 즉 위/아래 방향(세로)을 의미한다.
     1은 열을 의미한다. 좀 더 자세히는, 열이 전개되는 방향, 즉 좌/우 방향(가로)을 의미한다.   **

 

concat() 사용

 

보면 알겠지만, store_id라는 컬럼이 중복임에도 불구하고, 중복이거나 말거나 그냥 갖다 붙였다.

 

2. merge(df1, df2, how, on)

이번엔 merge()를 보자.

 

how : 기준 df

on : 기준 컬럼

 

merge()

 

왼쪽 df( 앞에 나온 df1이 왼쪽 df에 해당한다)의 store_id 컬럼을 기준으로 합친 것을 볼 수 있다.

 

SQL의 LEFT JOIN ... ON ... 구문과 굉장히 흡사하다. SQL의 JOIN 구문처럼 how parameter에 right, outer 등등을 사용할 수 있다.

이건 직접 해 보기로 하자.

 

concat()과 merge()의 기본적인 사용 방법과 차이점에 대해 알아보았다.

 

물론 더 많은 쓰임과 사용 방법이 있겠으나, 이 정도만 알아도 충분 할 것이다.