Base/Python

[Python] Pandas 사용법 - 두가지의 DataFrame 합치기 (merge, join)

반응형

## DataFrame merge

두 개의 데이터 프레임을 하나로 합치는 함수

pd.merge(dataframe1,dataframe2)

 

 

 

pd.merge를 통해 두 데이터 프레임을 합친다.

기본적으로 merge를 했을 때 같은 칼럼을 기준으로 한다. 이건 자동으로 찾아준다. 여기서는 학번을 기준으로 합쳐져서 겹쳐지는 값들만 가지고 나왔다.

 

 

만약 컬럼을 지정해주고 싶을 경우에는 on이라는 옵션을 사용한다. 아래와 같이 on을 통해 기준이 되는 칼럼을 학번으로 지정해 줄 수 있다.

또한 how라는 옵션이 있는데 sql 의 join의 inner, left, right, outer 개념과 같다. 

how는 어떻게 합칠 것인가를 나타낸다.

 


 

# how 옵션

 

# how = inner

-두 컬럼을 기준으로 공통되는 것만 나온다.(기본값이다)

 

 

# how = left

- 왼쪽 데이터 프레임을 기준으로 왼쪽에 맞춰 합친다.(왼쪽 칼럼의 기준은 다 나오되 합치는 데 있어서 없는 값은 NaN이 나온다.)

 

 

# how = right 

- 오른쪽 데이터 프레임을 기준으로 왼쪽에 맞춰 합친다.(오른쪽 컬럼의 기준은 다 나오되 합치는 데 있어서 없는 값은 NaN이 나온다.)

right 일 때는 오른쪽을 기준으로 값이나온다.

 

# how = outer

두 데이터 프레임에 대해서 모두 출력한다.

 


 

 

# left_on , right_on

 

공통된 값이 없을 때 조인하는 방법

 

 

이와 같이 겹치는 칼럼이 없어도 merge 할 수 있다. (그냥 merge를 하면 찾지 못해서 안된다.)

 

left_on(= 왼쪽에서 지정해 줄 칼럼)과 right_on(= 오른쪽에서 지정해 줄 칼럼)을 통해  지정해줄 칼럼을 설정하고 how를 통해 어떻게 붙일지를 정한다. 

여기서 보면 왼쪽 dataframe에서 학번을 기준으로 / 오른쪽 dataframe에서는 과목 코드를 기준으로 합쳐졌다.

위에서 보면 학번과 과목 코드의 값이 똑같은 것 을 볼 수 있다.

 


 

# right_index=True / left_index =True

 

해당 데이터 프레임의 인덱스를 기준으로 사용할 때 쓴다.

이 같은 데이터 프레임이 있을 때 두 개의 연관관계가 없다. 이럴 때 이것들을 합치기 위해서 

 

 

이런 형식으로 된다. 이렇게 되면 왼쪽 데이터 프레임에 있는 인덱스 값과 오른쪽 데이터프레임에 있는 인덱스 값을 기준으로 두 데이터 프레임을 합친다.

 


# join

join으로도 위와 같은 형태의 데이터 프레임을 만들 수 있다.

 

반응형