일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 1유형
- ml 웹서빙
- webserving
- CUDA
- streamlit
- 머신러닝
- 3유형
- 성능
- 인공지능
- DASH
- 딥러닝
- 예제소스
- 2유형
- Ai
- ㅂ
- 캐글
- KNN
- 빅데이터분석기사
- K최근접이웃
- qgis
- 공간시각화
- 실기
- 공간분석
- Kaggle
- GPU
- fastapi
- dl
- QGIS설치
- gradio
- pytorch
Archives
- Today
- Total
에코프로.AI
[Python] Pandas - DataFrame 합치기 (Feat. concat(), merge(), join()) 본문
AI Tutorial
[Python] Pandas - DataFrame 합치기 (Feat. concat(), merge(), join())
AI_HitchHiker 2024. 11. 5. 14:23
Python에서 DataFrame을 합치는 방법에는 크게 세 가지가 있습니다.
concat(), merge(), 그리고 join(). 각각의 함수는 다른 상황에서 유용하게 사용됩니다.
아래에 각 방법에 대한 설명과 예시 코드를 제공합니다.
1. concat(): DataFrame을 단순히 연결 (위아래 또는 좌우로)
concat() 함수는 여러 DataFrame을 세로(행) 또는 가로(열) 방향으로 연결할 때 사용됩니다.
예시:
import pandas as pd
# 두 개의 DataFrame 생성
df1 = pd.DataFrame({
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']
})
df2 = pd.DataFrame({
'A': ['A4', 'A5', 'A6', 'A7'],
'B': ['B4', 'B5', 'B6', 'B7']
})
# 세로로 연결 (행 기준)
df_concat = pd.concat([df1, df2], axis=0)
print(df_concat)
# 가로로 연결 (열 기준)
df_concat_columns = pd.concat([df1, df2], axis=1)
print(df_concat_columns)
- 결과:
- 세로 연결:
A B
0 A0 B0
1 A1 B1
2 A2 B2
3 A3 B3
0 A4 B4
1 A5 B5
2 A6 B6
3 A7 B7
- 가로 연결:
A B A B
0 A0 B0 A4 B4
1 A1 B1 A5 B5
2 A2 B2 A6 B6
3 A3 B3 A7 B7
2. merge(): 공통 컬럼을 기준으로 병합
merge()는 SQL의 JOIN과 유사하게 두 DataFrame을 공통된 컬럼을 기준으로 병합할 때 사용됩니다.
예시:
import pandas as pd
# 두 개의 DataFrame 생성 (공통 키 컬럼이 존재)
left = pd.DataFrame({
'Key': ['K0', 'K1', 'K2', 'K3'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']
})
right = pd.DataFrame({
'Key': ['K0', 'K1', 'K2', 'K4'],
'C': ['C0', 'C1', 'C2', 'C4'],
'D': ['D0', 'D1', 'D2', 'D4']
})
# 내부 조인 (inner join, 공통된 Key 값만 병합)
df_merge_inner = pd.merge(left, right, on='Key')
print(df_merge_inner)
# 외부 조인 (outer join, 모든 Key 값을 병합하고 없는 값은 NaN 처리)
df_merge_outer = pd.merge(left, right, on='Key', how='outer')
# merge key값은 left, right 따로 설정하는 방법
# merged_df = pd.merge(df1, df2, left_on='lkey', right_on='rkey', how='inner')
print(df_merge_outer)
결과:
- 내부 조인:
Key A B C D
0 K0 A0 B0 C0 D0
1 K1 A1 B1 C1 D1
2 K2 A2 B2 C2 D2
- 외부 조인:
Key A B C D
0 K0 A0 B0 C0 D0
1 K1 A1 B1 C1 D1
2 K2 A2 B2 C2 D2
3 K3 A3 B3 NaN NaN
4 K4 NaN NaN C4 D4
3. join(): 인덱스를 기준으로 병합
join()은 두 DataFrame을 인덱스를 기준으로 병합할 때 사용됩니다. 보통 set_index()를 통해 인덱스를 설정한 후 사용합니다.
예시:
import pandas as pd
# 두 개의 DataFrame 생성 (인덱스를 기준으로 병합)
left = pd.DataFrame({
'A': ['A0', 'A1', 'A2'],
'B': ['B0', 'B1', 'B2']
}, index=['K0', 'K1', 'K2'])
right = pd.DataFrame({
'C': ['C0', 'C1', 'C2'],
'D': ['D0', 'D1', 'D2']
}, index=['K0', 'K1', 'K3'])
# 인덱스를 기준으로 병합 (기본은 왼쪽 조인)
df_join = left.join(right, how='left')
print(df_join)
# 인덱스를 기준으로 외부 조인 (outer join)
df_join_outer = left.join(right, how='outer')
print(df_join_outer)
결과:
- 왼쪽 조인:
A B C D
K0 A0 B0 C0 D0
K1 A1 B1 C1 D1
K2 A2 B2 NaN NaN
- 외부 조인:
A B C D
K0 A0 B0 C0 D0
K1 A1 B1 C1 D1
K2 A2 B2 NaN NaN
K3 NaN NaN C2 D2
요약:
- concat(): 여러 DataFrame을 위아래 또는 좌우로 단순히 이어 붙입니다.
- merge(): 공통된 컬럼을 기준으로 SQL 스타일의 JOIN을 수행합니다.
- join(): 인덱스를 기준으로 두 DataFrame을 병합합니다.
필요한 상황에 맞게 적절한 방법을 선택하여 사용하면 됩니다!
끝~

'AI Tutorial' 카테고리의 다른 글
[python] Python 메모리 최적화 기법: 효율적인 코드를 위한 11가지 팁 (0) | 2024.11.14 |
---|---|
[GitHub] Colab에서 GoogleDrive의 파일 GitHub연동 (0) | 2024.11.07 |
[Python] Pandas - DataFrame의 컬럼명 변경 (0) | 2024.10.23 |
[JupyterNotebook] 유용한 단축키 모음 (0) | 2024.10.18 |
[Python] 대용량 csv 엑셀파일 읽기 (0) | 2024.10.16 |