데이터프레임의 결합
- 단순한 행, 열 결합
- 특정한 조건에 따라서 열을 추가하는 경우
import pandas as pd
## 단순한 행을 추가
df = pd.DataFrame({
'S1' : [1,2,3,4],
'S2' : [5,6,7,8]
})
df_2 = pd.DataFrame([1,2])
concat()
- 데이터프레임을 결합하는 함수
- 매개변수 axis -> 행을 추가를 할지 열을 추가 할지 지정
- 단순한 결합
- 매개변수 ignore_index -> 기본값이 false, 인덱스의 값을 그대로 유지할지 지정
## 행을 추가
# pd.concat([df, df_2], axis=0, ignore_index=True)
pd.concat([df, df_2], axis="rows").reset_index(drop=True)
df_3 = pd.DataFrame({
'S1' : [1,2]
})
pd.concat([df, df_3], axis=1)
merge()
- 데이터프레임을 결합하는 함수
- 특정 조건에 맞춰서 열을 추가하는 함수
- 매개변수 on -> 조건
- 매개변수 how -> (left, right, inner, full) 방법
df_4 = pd.DataFrame({
"id" : [1,2,3,4,5],
"item" : ['a', 'b', 'a', 'a', 'b']
})
df_5 = pd.DataFrame({
"id" : [1,4,5,2,3],
"name" : ["kim", "lee", "park", "choi", "ha"]
})
test = df_5.sort_values("id").reset_index(drop=True)
## df_4, df_5 결합
## 단순히 열을 추가하는 concat()
pd.concat([df_4, test], axis=1)
## 단순한 열 결합 X
## 특정한 조건에 맞게 열 결합
## merge(데이터프레임, 데이터프레임, on = 조건, how = 방법)
pd.merge(df_4, df_5, on = 'id', how="left")
## left, right, inner 데이터의 순서가 다를뿐 내용은 같은 내용이 출력
## 이유는??
##
df_6 = pd.DataFrame({
"item" : ['a', 'b', 'c'],
'item_price' : ["100", "200", "300"]
})
## df_4와 df_6 merge()이용하여 결합
## on이라는 조건에 들어가야될 값은? -> item
## df_4 -> item 값 리스트 -> [a, b]
## df_6 -> item 값 리스트 -> [a, b, c]
pd.merge(df_4, df_6, on='item', how='right')
df_7 = pd.DataFrame({
"id": [1,2,3,4,5,6],
"item" : ['a', 'a', 'b', 'a', 'b', 'd']
})
pd.merge(df_7, df_6, on='item', how='outer')