Python/Python 기초문법
Python - Pandas 데이터 통합하기 (concat, join, merge)
GinaKim
2024. 1. 8. 11:53
728x90
concat() : 행 추가
* pandas 1.4.0 버전 이후로 append 지원 안함. concat() 사용 권장
import pandas as pd
import numpy as np
df1 = pd.DataFrame({
'Class1' : [95, 92, 98, 100],
'Class2' : [91, 93, 97, 99]
})
df2 = pd.DataFrame({
'Class1' : [87, 89],
'Class2' :[85, 90]
})
result = pd.concat([df1, df2])
result
위 데이터에서 인덱스 정렬하고 싶을 때, ignore_index=True 추가
df3 = pd.DataFrame({
'Class1' : [96, 83]
})
pd.concat([result, df3], ignore_index=True)
join() : 열 추가
df4 = pd.DataFrame({
'Class3' : [93, 91, 95, 98]
})
df1.join(df4)
인덱스 라벨 추가하고 싶을 때, 인덱스 라벨 지정 후 index= index_label 추가
index_label = ['a','b','c','d'] # 인덱스 라벨 추가
df1a = pd.DataFrame({'Class1': [95, 92, 98, 100],
'Class2': [91, 93, 97, 99]}, index= index_label)
df4a = pd.DataFrame({'Class3': [93, 91, 95, 98]}, index=index_label)
df1a.join(df4a)
join할 때, 인덱스가 같아야 한다는 점 참고!
다르면 NaN값 나옴
index_label = ['a','b','c','d']
df1a = pd.DataFrame({'Class1': [95, 92, 98, 100],
'Class2': [91, 93, 97, 99]})
df4a = pd.DataFrame({'Class3': [93, 91, 95, 98]}, index=index_label)
df1a.join(df4a)
merge() : 특정 열 기준 통합시 사용
join 사용 시 컬럼 열 중복으로 오류가 남
df_A_B = pd.DataFrame({'판매월': ['1월', '2월', '3월', '4월'],
'제품A': [100, 150, 200, 130],
'제품B': [90, 110, 140, 170]})
df_C_D = pd.DataFrame({'판매월': ['1월', '2월', '3월', '4월'],
'제품C': [112, 141, 203, 134],
'제품D': [90, 110, 140, 170]})
df_A_B.merge(df_C_D)
merge 통합 방법
df_left = pd.DataFrame({'key':['A','B','C'], 'left': [1, 2, 3]})
df_right = pd.DataFrame({'key':['A','B','D'], 'right': [4, 5, 6]})
left
df_left.merge(df_right, how='left', on= 'key')
right
df_left.merge(df_right, how='right', on= 'key')
outer
df_left.merge(df_right, how='outer', on= 'key') # FULL JOIN
inner
df_left.merge(df_right, how='inner', on= 'key') # 교집합
728x90