Để 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.