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

Python Pandas – 두 개 이상의 DataFrame을 열 방향(axis=1)으로 연결하는 방법

Pandas DataFrame 두 개 이상을 열 방향으로 연결하기

두 개 이상의 Pandas DataFrame을 하나로 합치려면 concat() 메서드를 사용하면 됩니다. 이때 열 방향(좌우로 나란히 붙이는 형태)으로 연결하려면 axis 매개변수를 axis=1로 설정해야 합니다.

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

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],
)

세 개의 DataFrame 연결하기

연결할 DataFrame들을 리스트로 만든 뒤 concat() 함수에 전달하고, axis=1을 지정하면 열 방향으로 연결됩니다.

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

전체 예제 코드

지금까지 설명한 내용을 모두 포함한 전체 코드는 다음과 같습니다.

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을 열 방향(axis=1)으로 연결
res = [dataFrame1, dataFrame2, dataFrame3]
print("\n세 개의 DataFrame을 열 방향으로 연결한 결과...\n", pd.concat(res, axis=1))

실행 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

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  Col1  Col2  Col3  Col1  Col2  Col3
0  10.0  40.0  70.0   NaN   NaN   NaN   NaN   NaN   NaN
1  20.0  50.0  80.0   NaN   NaN   NaN   NaN   NaN   NaN
2  30.0  60.0  90.0   NaN   NaN   NaN   NaN   NaN   NaN
3   NaN   NaN   NaN  100.0 130.0 160.0   NaN   NaN   NaN
4   NaN   NaN   NaN  110.0 140.0 170.0   NaN   NaN   NaN
5   NaN   NaN   NaN  120.0 150.0 180.0   NaN   NaN   NaN
6   NaN   NaN   NaN   NaN   NaN   NaN  200.0 230.0 260.0
7   NaN   NaN   NaN   NaN   NaN   NaN  210.0 240.0 270.0
8   NaN   NaN   NaN   NaN   NaN   NaN  220.0 250.0 280.0

참고: NaN 값이 나타나는 이유

출력 결과에 NaN 값이 많이 보이는 것은 세 DataFrame의 인덱스가 서로 다르기 때문입니다. axis=1로 연결할 때 Pandas는 인덱스를 기준으로 행을 맞추므로, 해당 인덱스가 존재하지 않는 위치에는 자동으로 NaN(결측값)이 채워집니다. 반대로 인덱스가 동일한 DataFrame들을 연결하면 데이터가 좌우로 깔끔하게 붙습니다.