pandas 에서 데이터 프레임을 병합하는 방법
- pd.concat()
- pd.merge()
- pd.join()
# 딕셔너리 안의 리스트 형태, 열 단위로 데이터가 만들어진다.
left = pd.DataFrame({
"key":["K0","K4","K2","K3"],
"A" : ["A0","A1","A2","A3"],
"B" : ["B0","B1","B2","B3"]
})
left
key | A | B | |
---|---|---|---|
0 | K0 | A0 | B0 |
1 | K4 | A1 | B1 |
2 | K2 | A2 | B2 |
3 | K3 | A3 | B3 |
#리스트 안의 딕셔너리 형태, 행 단위로 데이터가 만들어진다.
right = pd.DataFrame([
{"key":"K0","C":"C0","D":"D0"},
{"key":"K1","C":"C1","D":"D1"},
{"key":"K2","C":"C2","D":"D2"},
{"key":"K3","C":"C3","D":"D3"},
])
right
key | C | D | |
---|---|---|---|
0 | K0 | C0 | D0 |
1 | K1 | C1 | D1 |
2 | K2 | C2 | D2 |
3 | K3 | C3 | D3 |
pd.merge()
- 두 데이터 프레임에서 컬럼이나 인덱스를 기준으로 잡고 병합해주는 방법
- 기준이 되주는 컬럼이나 인덱스를 키값이라고 합니다.
- 기준이 되는 키 값은 데이터 프레임에 모두 포함되어 있어야 합니다.
# key를 기준으로 공통된 부분만 병합 됨
# how = 'inner' 가 디폴트 값
pd.merge(left,right,on="key")
key | A | B | C | D | |
---|---|---|---|---|---|
0 | K0 | A0 | B0 | C0 | D0 |
1 | K2 | A2 | B2 | C2 | D2 |
2 | K3 | A3 | B3 | C3 | D3 |
# left에 있는 키 값을 기준으로 right 가 병합 됨 (없는 값은 NaN 표시)
pd.merge(left,right,how="left",on="key")
key | A | B | C | D | |
---|---|---|---|---|---|
0 | K0 | A0 | B0 | C0 | D0 |
1 | K4 | A1 | B1 | NaN | NaN |
2 | K2 | A2 | B2 | C2 | D2 |
3 | K3 | A3 | B3 | C3 | D3 |
pd.merge(left,right,how="right",on="key")
key | A | B | C | D | |
---|---|---|---|---|---|
0 | K0 | A0 | B0 | C0 | D0 |
1 | K1 | NaN | NaN | C1 | D1 |
2 | K2 | A2 | B2 | C2 | D2 |
3 | K3 | A3 | B3 | C3 | D3 |
# how = 'outer' 을 하면 합집합으로 병합된다.
pd.merge(left,right,how='outer',on='key')
key | A | B | C | D | |
---|---|---|---|---|---|
0 | K0 | A0 | B0 | C0 | D0 |
1 | K4 | A1 | B1 | NaN | NaN |
2 | K2 | A2 | B2 | C2 | D2 |
3 | K3 | A3 | B3 | C3 | D3 |
4 | K1 | NaN | NaN | C1 | D1 |
이 경우, NaN 값에 대한 고민이 필요하다.
'DS_Study > 서울시 CCTV 현황' 카테고리의 다른 글
[DS_study] Matploblib 기초 (0) | 2022.05.29 |
---|---|
[DS_study] CCTV, 인구통계 데이터 합치기 (0) | 2022.05.29 |
[DS_Study] 데이터 흝어보기 (0) | 2022.05.29 |
[DS_study] pandas dataframe 조건식, 칼럼 추가, 수정, isin(), 제거, 함수 적용 (0) | 2022.05.25 |
[DS_study] pandas dataframe 정렬, 선택, 조회 (0) | 2022.05.25 |
pandas 에서 데이터 프레임을 병합하는 방법
- pd.concat()
- pd.merge()
- pd.join()
# 딕셔너리 안의 리스트 형태, 열 단위로 데이터가 만들어진다.
left = pd.DataFrame({
"key":["K0","K4","K2","K3"],
"A" : ["A0","A1","A2","A3"],
"B" : ["B0","B1","B2","B3"]
})
left
key | A | B | |
---|---|---|---|
0 | K0 | A0 | B0 |
1 | K4 | A1 | B1 |
2 | K2 | A2 | B2 |
3 | K3 | A3 | B3 |
#리스트 안의 딕셔너리 형태, 행 단위로 데이터가 만들어진다.
right = pd.DataFrame([
{"key":"K0","C":"C0","D":"D0"},
{"key":"K1","C":"C1","D":"D1"},
{"key":"K2","C":"C2","D":"D2"},
{"key":"K3","C":"C3","D":"D3"},
])
right
key | C | D | |
---|---|---|---|
0 | K0 | C0 | D0 |
1 | K1 | C1 | D1 |
2 | K2 | C2 | D2 |
3 | K3 | C3 | D3 |
pd.merge()
- 두 데이터 프레임에서 컬럼이나 인덱스를 기준으로 잡고 병합해주는 방법
- 기준이 되주는 컬럼이나 인덱스를 키값이라고 합니다.
- 기준이 되는 키 값은 데이터 프레임에 모두 포함되어 있어야 합니다.
# key를 기준으로 공통된 부분만 병합 됨
# how = 'inner' 가 디폴트 값
pd.merge(left,right,on="key")
key | A | B | C | D | |
---|---|---|---|---|---|
0 | K0 | A0 | B0 | C0 | D0 |
1 | K2 | A2 | B2 | C2 | D2 |
2 | K3 | A3 | B3 | C3 | D3 |
# left에 있는 키 값을 기준으로 right 가 병합 됨 (없는 값은 NaN 표시)
pd.merge(left,right,how="left",on="key")
key | A | B | C | D | |
---|---|---|---|---|---|
0 | K0 | A0 | B0 | C0 | D0 |
1 | K4 | A1 | B1 | NaN | NaN |
2 | K2 | A2 | B2 | C2 | D2 |
3 | K3 | A3 | B3 | C3 | D3 |
pd.merge(left,right,how="right",on="key")
key | A | B | C | D | |
---|---|---|---|---|---|
0 | K0 | A0 | B0 | C0 | D0 |
1 | K1 | NaN | NaN | C1 | D1 |
2 | K2 | A2 | B2 | C2 | D2 |
3 | K3 | A3 | B3 | C3 | D3 |
# how = 'outer' 을 하면 합집합으로 병합된다.
pd.merge(left,right,how='outer',on='key')
key | A | B | C | D | |
---|---|---|---|---|---|
0 | K0 | A0 | B0 | C0 | D0 |
1 | K4 | A1 | B1 | NaN | NaN |
2 | K2 | A2 | B2 | C2 | D2 |
3 | K3 | A3 | B3 | C3 | D3 |
4 | K1 | NaN | NaN | C1 | D1 |
이 경우, NaN 값에 대한 고민이 필요하다.
'DS_Study > 서울시 CCTV 현황' 카테고리의 다른 글
[DS_study] Matploblib 기초 (0) | 2022.05.29 |
---|---|
[DS_study] CCTV, 인구통계 데이터 합치기 (0) | 2022.05.29 |
[DS_Study] 데이터 흝어보기 (0) | 2022.05.29 |
[DS_study] pandas dataframe 조건식, 칼럼 추가, 수정, isin(), 제거, 함수 적용 (0) | 2022.05.25 |
[DS_study] pandas dataframe 정렬, 선택, 조회 (0) | 2022.05.25 |