본문 바로가기

데이터

파이썬 기초 - 표 합치기

반응형

표 합치기

 

 

 

 


 

표를 합치는 데에는 기본적으로 두 개의 함수가 사용된다.

concat과 merge함수

 

이 두 함수의 차이점이라면

concat함수는 단순하게 표를 이어붙일 때 사용되고

merge함수는 특정 고유 키 값을 기준으로 병합할 때 사용된다.

 

 

 

 

concat

 

가령 df와 df_copy라는 함수를 합친다고 할 때 

pd.concat([df, df_copy], sort=False) 를 입력하면

표가 위아래로 합쳐진다. (sort=False는 row기준으로 합침)

 

여기서 주의할 점은 concat함수는 합칠 함수들을 리스트로 받는다는 것이다.

 

 

그런데 이렇게 합치게 되면 아래와 같이 index가 엉망이 되어버린다.

따라서 인덱스를 재편해주기 위해

df_concat.reset_index(drop=True) 를 입력한다. (df_concat함수는 위 두 함수가 합쳐져 새로 만들어진 함수)

drop을 True로 두는 것은 새 index column이 생성되지 않게 하기 위해서이다.

 

 

반면 columns를 기준으로 표를 합칠 땐

pd.concat([df, df2], axis=1)

처럼 axis=1을 주면 된다.

 

 

 

merge

 

pd.merge(df,df_right,on='이름',how='left')

merge함수는 위와 같이 사용된다. 먼저 합칠 함수 두 개를 입력하고, 어떤 것(컬럼)을 기준으로 병합할지 입력한다. (여기서는 이름)

그리고 어떤 함수를 기준으로 병합할지도 입력한다. (여기서는 df함수)

따라서 왼쪽 함수 기준으로 데이터가 없는 건 nan값으로 표시된다.

만약 right함수 기준으로 병합하고 left함수보다 right함수가 데이터를 더 적게 가지고 있다면 그만큼 DataFrame의 사이즈가 줄게 된다.

 

how에는 inner혹은 outer 옵션값도 사용된다. 

inner의 경우 교집합, outer의 경우 합집합이라 생각하면 된다. 

즉 교집합은 둘 다 데이터가 있는 경우만 합치고 합집합은 병합할 경우 데이터가 없는 부분은 nan값으로 표시된다. 

 

 

성질은 같지만 컬럼명이 같을 땐 아래와 같이 입력할 수 있다.

pd.merge(df,df_right, left_on='이름',right_on='성함', how='outer')

 

반응형