Python/데이터 전처리
데이터프레임 합치기(판다스/Pandas)
강떡볶
2022. 4. 7. 22:47
3가지 방법
# 데이터프레임 만들기
df1 = pd.DataFrame({'a' : ['a0', 'a1', 'a2'],
'b' : ['b0', 'b1', 'b2'],
'c' : ['c0', 'c1', 'c2']},
index = [0,1,2])
df2 = pd.DataFrame({'a' : ['a0', 'a1', 'a2'],
'b' : ['b0', 'b1', 'b2'],
'c' : ['c0', 'c1', 'c2'],
'd' : ['d0', 'd1', 'd2']},
index = [1,2,3])
print(df1)
print('\n')
print(df2)
1) 연결(concat)
result1 = pd.concat([df1, df2])
result1
- 데이터프레임을 행 방향으로 위 아래로 연결
- 축 방향을 지정하지 않으면 디폴트 값이 행 방향
- 행 인덱스는 본래 형태를 유지
result2 = pd.concat([df1, df2], ignore_index = True)
result2
- ignore_index=True 옵션을 사용
- 기존 행 인덱스 무시하고 새로운 행 인덱스 설정
result3 = pd.concat([df1, df2], axis = 1)
result3
- axis=1 옵션으로 좌우 열 방향으로 연결
- joing='outer'은 디폴트 값으로 행 인덱스 합집합으로 구성
result3_in = pd.concat([df1, df2], axis = 1, join = 'inner')
result3_in
- axis=1 옵션으로 좌우 열 방향으로 연결
- join='inner'은 행 인덱스 교집합을 기준
axis=0 은 '열', axis=1 은 '행'
2) 병합(merge)
merge_inner = pd.merge(df1, df2)
merge_inner
- merage() 함수 기본 값: on=None, how='inner'
- on=None 옵션: 공통으로 속하는 모든 열을 기준으로 병합
- how='inner' 옵션(교집합) : 기준이 되는 열의 데이터가 공통으로 존재하는 교집합일 경우에만 추출
merge_outer = pd.merge(df1, df2, how = 'outer', on = 'c')
merge_outer
- on='c' 옵션 : 공통 열 중에서 'c'열을 키로 병합
- how='outer' 옵션(합집합) : 기준이 되는 'c'열의 데이터가 한 쪽에만 속하더라도 포함
merge_left = pd.merge(df1, df2, how = 'left', on = 'c')
merge_outer
- how='left' 옵션 : 왼쪽 데이터프레임 키열에 속하는 데이터 값을 기준으로 병합
3) 결합(join)
# 데이터프레임 만들기
df1 = pd.DataFrame({'a' : ['a0', 'a1', 'a2'],
'b' : ['b0', 'b1', 'b2'],
'c' : ['c0', 'c1', 'c2']},
index = [0,1,2])
df2 = pd.DataFrame({'e' : ['e0', 'e1', 'e2'],
'f' : ['e0', 'e1', 'e2'],
'g' : ['g0', 'g1', 'g2'],
'h' : ['h0', 'h1', 'h2']},
index = [1,2,3])
df3 = df1.join(df2)
df3
- merge() 함수랑 비슷
- 행 인덱스를 기준으로 결합한다는 점에서 다름