[Python] 데이터프레임 join() 사용하기

도갱도갱·2022년 1월 16일
0

Python

목록 보기
24/34
post-thumbnail
post-custom-banner

join 사용하기

💡 join()은 인덱스를 기준으로 병합, merge()는 컬럼을 기준으로 데이터프레임을 병합하는 것이 default이고 편한 방법이라고 생각한다.


Syntax

df_join = df1.join(df2, on = 'key', how = 'left', lsuffix="L",rsuffix='R')

✔️ how

  • join 방식 지정 {'left', 'right', 'inner', 'outer'}
  • default는 'left' 조인

✔️ on

  • 명시하지 않는다면, 두 데이터프레임의 인덱스를 기준으로 병합한다
  • 명시한다면 왼쪽 데이터프레임(위 예시에서 df1)의 컬럼를 지정
  • 왼쪽 데이터프레임의 컬럼과 오른쪽 데이터프레임의 인덱스를 기준으로 병합한다

✔️ lsuffix, rsuffix

  • join()은 두 데이터프레임의 컬럼명이 동일하면 에러가 발생한다
  • 동일한 컬럼명이 있을때 suffix="동일한 컬럼명 뒤에 붙일 문자"를 명시해 주면 에러가 발생하지 않으며, 동일한 컬럼명 뒤에 각 지정한 문자를 붙인다



how 조인 방식

✔️ merge() 사용 방법과 동일하다 https://velog.io/@dkwjd131/Python-merge



join() 예시

# 데이터프레임 생성
import pandas as pd

df1 = pd.DataFrame({'A':['a1','a2','a3'],'B1':['b1','b2','b3']}, index = ['a','b','c'])
df2 = pd.DataFrame({'B2':['b1','b2','b3'],'C':['c1','c2','c3']}, index=['b','c','d'])

df3 = pd.DataFrame({'A':['a1','a2','a3'],'B1':['b1','b2','b3']}, index = ['i1','i2','i3'])
df4 = pd.DataFrame({'B2':['b1','b2','b3'],'C':['c1','c2','c3'], 'I':['i2','i3','i4']})



왼쪽 데이터프레임 인덱스 기준으로 병합

df1.join(df2)

merge로 동일한 결과 만들기

pd.merge(df1, df2, left_index=True, right_index=True, how='left')



오른쪽 데이터프레임 인덱스 기준으로 병합

df1.join(df2, how='right')

merge로 동일한 결과 만들기

pd.merge(df1, df2, left_index=True, right_index=True, how='right')



컬럼과 인덱스 혼합하여 병합

df4의 I컬럼과 df3의 인덱스를 기준으로 병합

df4.join(df3, on='I')

merge로 동일한 결과 만들기

pd.merge(df4, df3, left_on='I', right_index= True, how='left')



참고

post-custom-banner

0개의 댓글