두 개 이상의 Pandas DataFrame을 하나로 합치려면 concat() 메서드를 사용하면 됩니다. 이때 axis 매개변수를 axis=0으로 설정하면 행(row) 방향으로 연결됩니다.
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
첫 번째 DataFrame 생성
dataFrame1 = pd.DataFrame(
{
"Col1": [10, 20, 30],
"Col2": [40, 50, 60],
"Col3": [70, 80, 90],
},
index=[0, 1, 2],
)
두 번째 DataFrame 생성
dataFrame2 = pd.DataFrame(
{
"Col1": [100, 110, 120],
"Col2": [130, 140, 150],
"Col3": [160, 170, 180],
},
index=[3, 4, 5],
)
세 번째 DataFrame 생성
dataFrame3 = pd.DataFrame(
{
"Col1": [200, 210, 220],
"Col2": [230, 240, 250],
"Col3": [260, 270, 280],
},
index=[6, 7, 8],
)
이제 concat() 메서드에 세 개의 DataFrame을 리스트 형태로 전달하여 모두 연결합니다. 행 방향으로 연결하려면 axis=0으로 설정합니다.
res = [dataFrame1, dataFrame2, dataFrame3] pd.concat(res, axis=0)
전체 예제 코드
다음은 지금까지의 내용을 정리한 전체 코드입니다.
import pandas as pd
# DataFrame1 생성
dataFrame1 = pd.DataFrame(
{
"Col1": [10, 20, 30],
"Col2": [40, 50, 60],
"Col3": [70, 80, 90],
},
index=[0, 1, 2],
)
print("DataFrame1...\n", dataFrame1)
# DataFrame2 생성
dataFrame2 = pd.DataFrame(
{
"Col1": [100, 110, 120],
"Col2": [130, 140, 150],
"Col3": [160, 170, 180],
},
index=[3, 4, 5],
)
print("DataFrame2...\n", dataFrame2)
# DataFrame3 생성
dataFrame3 = pd.DataFrame(
{
"Col1": [200, 210, 220],
"Col2": [230, 240, 250],
"Col3": [260, 270, 280],
},
index=[6, 7, 8],
)
print("DataFrame3...\n", dataFrame3)
# 두 개 이상의 DataFrame 연결
# 행 방향으로 연결하려면 axis=0 설정
res = [dataFrame1, dataFrame2, dataFrame3]
print("\n세 개의 DataFrame을 행 방향으로 연결한 결과...\n", pd.concat(res, axis=0))
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DataFrame1...
Col1 Col2 Col3
0 10 40 70
1 20 50 80
2 30 60 90
DataFrame2...
Col1 Col2 Col3
3 100 130 160
4 110 140 170
5 120 150 180
DataFrame3...
Col1 Col2 Col3
6 200 230 260
7 210 240 270
8 220 250 280
세 개의 DataFrame을 행 방향으로 연결한 결과...
Col1 Col2 Col3
0 10 40 70
1 20 50 80
2 30 60 90
3 100 130 160
4 110 140 170
5 120 150 180
6 200 230 260
7 210 240 270
8 220 250 280
실행 결과를 보면 세 개의 DataFrame이 각자 가진 인덱스(0~8)를 그대로 유지한 채 위에서 아래로 차례대로 합쳐진 것을 확인할 수 있습니다. 만약 연결 후 인덱스를 새로 부여하고 싶다면 ignore_index=True 옵션을 함께 사용하면 됩니다.