Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python - Cách nối hai hoặc nhiều DataFrame Pandas theo cột

Để nối nhiều hơn hai DataFrame Pandas, sử dụng phương thức concat(). Đặt tham số axis = 1 để nối theo cột. Trước tiên, nhập thư viện cần thiết:

import pandas as pd

Tạo các DataFrame

DataFrame thứ nhất

dataFrame1 = pd.DataFrame({
    "Col1": [10, 20, 30],
    "Col2": [40, 50, 60],
    "Col3": [70, 80, 90]
}, index=[0, 1, 2])

DataFrame thứ hai

dataFrame2 = pd.DataFrame({
    "Col1": [100, 110, 120],
    "Col2": [130, 140, 150],
    "Col3": [160, 170, 180]
}, index=[3, 4, 5])

DataFrame thứ ba

dataFrame3 = pd.DataFrame({
    "Col1": [200, 210, 220],
    "Col2": [230, 240, 250],
    "Col3": [260, 270, 280]
}, index=[6, 7, 8])

Nối 3 DataFrame theo cột

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

Ví dụ hoàn chỉnh

import pandas as pd

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

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

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

# Nối nhiều DataFrame theo cột
res = [dataFrame1, dataFrame2, dataFrame3]
print("\nNối 3 DataFrame (theo cột)...\n", pd.concat(res, axis=1))

Kết quả đầu ra

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

Nối 3 DataFrame (theo cột)...
   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

Lưu ý: Do các DataFrame có chỉ mục (index) khác nhau, kết quả sẽ chứa nhiều giá trị NaN. Để nối liền mạch, hãy đảm bảo các DataFrame có cùng chỉ mục hoặc sử dụng ignore_index=True.