본문으로 바로가기

두 개의 데이터프레임 합치기 위한 3가지 방법이 있다. 

join, merge, concat 함수를 사용한 것이다. 이 중에서는 기준열을 매칭시켜 합치는 것이 있는 반면, 따로 매칭시키지 않고 바로 위아래로, 또는 옆으로 붙이는 함수가 있다. 매칭시켜서 넣는 것은 join, merge 함수이고, 따로 매칭시키지 않는 함수는 concat 함수이다. 

DataFrame A와 B가 있다고 가정하고 아래에서 자세히 설명을 시작해보겠다.


1. join()

- 가장 권장하는 방법

- 전제 조건: A와 B 데이터프레임의 index열이 동일해야한다.

- index 열을 기준으로 매칭시켜서 데이터프레임을 합친다.

A.join(B)

 

 

 

2. merge()

- 전제 조건 없이 기준열을 설정하면 기준열에 매칭시켜 데이터프레임을 합칠 수 있다.

# 특정 열 기준으로 데이터프레임을 합칠 때
pd.merge(A, B, left_on="A 기준열", right_on="B 기준열", how='inner')


# 동일하게 지정된 index 열 기준으로 데이터프레임을 합칠 때
pd.merge(A, B, left_index=True, right_index=True, how='inner')

- how : join의 방식

- inner(교집합), left(왼쪽 기준으로 합치기, 없어도 결측치로 존재하도록), right(오른쪽 기준으로 합치기), outer(합집합)

 

 


3. concat() 

- concatenate == 연결시키다

- 기준열을 중심으로 매칭시켜 데이터프레임을 합치는 join, merge함수와 달리, 위아래 또는 양방향에 데이터프레임을 연결시킨다.

- 주로 위아래에 붙여주기 위해 사용한다. (axis=0)

- 왼쪽 오른쪽으로 합치고 싶다면, axis=1

pd.concat([A, B], axis=0, join='outer', ignore_index=False)

# ignore_index : 중복되는 row 이름 index 무시

 

- 아래 그림을 보면 axis에 대한 감이 더 잘 올 것이다.