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들을 연결하면 데이터가 좌우로 깔끔하게 붙습니다.