Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas - 두 개 이상의 DataFrame을 연결하는 방법 완벽 가이드

Pandas에서 두 개 이상의 DataFrame을 하나로 합치려면 concat() 메서드를 사용하면 됩니다. concat()은 여러 DataFrame을 리스트 형태로 전달받아 위아래(행 방향)로 순서대로 연결해 줍니다.

1. 라이브러리 임포트

먼저 필요한 라이브러리를 임포트합니다.

import pandas as pd

2. DataFrame 생성

예제를 위해 세 개의 DataFrame을 만들어 보겠습니다.

첫 번째 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],
)

3. concat()으로 DataFrame 연결하기

연결할 DataFrame들을 리스트에 담은 후 pd.concat()에 전달하면 됩니다.

res = [dataFrame1, dataFrame2, dataFrame3]
pd.concat(res)

전체 예제 코드

지금까지의 내용을 모두 포함한 완성된 코드는 다음과 같습니다.

import pandas as pd

# 첫 번째 DataFrame 생성
dataFrame1 = pd.DataFrame(
    {
        "Col1": [10, 20, 30],
        "Col2": [40, 50, 60],
        "Col3": [70, 80, 90],
    },
    index=[0, 1, 2],
)
print("DataFrame1...\n", dataFrame1)

# 두 번째 DataFrame 생성
dataFrame2 = pd.DataFrame(
    {
        "Col1": [100, 110, 120],
        "Col2": [130, 140, 150],
        "Col3": [160, 170, 180],
    },
    index=[3, 4, 5],
)
print("DataFrame2...\n", dataFrame2)

# 세 번째 DataFrame 생성
dataFrame3 = pd.DataFrame(
    {
        "Col1": [200, 210, 220],
        "Col2": [230, 240, 250],
        "Col3": [260, 270, 280],
    },
    index=[6, 7, 8],
)
print("DataFrame3...\n", dataFrame3)

# 세 개 이상의 DataFrame 연결
res = [dataFrame1, dataFrame2, dataFrame3]
print("\n세 개의 DataFrame 연결 결과...\n", pd.concat(res))

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

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: 기존 인덱스를 무시하고 0부터 새로 인덱스를 부여합니다.
  • axis=1: 행이 아닌 열(가로) 방향으로 DataFrame을 연결합니다.
  • keys: 연결되는 각 DataFrame에 계층적 인덱스를 지정하여 출처를 구분할 수 있습니다.

예를 들어 인덱스를 재설정하여 연결하려면 다음과 같이 작성합니다.

pd.concat(res, ignore_index=True)

이처럼 pd.concat()을 활용하면 두 개뿐만 아니라 그 이상의 DataFrame도 손쉽게 하나로 합칠 수 있습니다.