Python_Wiki/Python_Library

pandas - 데이터 결합: join(파이썬) / merge / concat

yj-data 2025. 7. 14. 10:48

pd.merge(df1, df2, on=기준컬럼, how=결합방법)

  • 결합방법에는 'inner', 'left', 'right', 'outer'. 방식은 sql과 동일
  • 기준컬럼이 여럿이면 리스트로 on에 기준컬럼을 넣어주면 됨.

 

#example
pd.merge(customer, orders, on='id', how='inner')

 

두 데이터의 기준 컬럼명이 다른 경우

pd.merge(df1, df2, left_on=df1의 기준컬럼, right_on=df2의 기준컬럼, how=결합방법)

 

다중요건 merge

값을 찾기 위한 열이 다중으로 필요할 경우

df1.merge(df2, on=['업체','음료'], how='left')

 

병합 시, 값이 특정 범위안에 들어가는지 여부에 따라 병합할 경우(merge_asof)

⭐ df1, df2 모두 병합의 기준이 될 열로 오름차순으로 정리되어 있어야 한다.

pd.merge_asof(left_df, right_df, on='기준열', by=참고할 공통, direction='backward')

이런 식의 df가 두개있고, 왼쪽df 에 단가를 붙이려고 한다면

pd.merge_asof(df,df1,on=["수량"],by = ['사이즈','종류'],direction='backward')

사이즈와 종류는 정확히 일치하고, 수량에 따라 분류를 하는 코드.

 


concat

pd.concat(dfs, axis=0, join='outer', keys=None)  

pd.concat(dfs, axis=0, join='outer', keys=None)  
#dfs => [df1,df2]
#axis=0이 디폴트, 행 결합, axis=1하면 열 결합으로 옆으로 데이터가 길어짐
#axis=0일때 join은 outer가 기본값.
#keys는 멀티인덱스 할때 사용

 

여러개 시트에, 똑같은 열을 가진 데이터가 나눠져있는 경우, 합치는 법

pd.concat(pd.read_excel(url,sheet_name=None).values())