แนวคิด
ฟังก์ชัน pd.concat() ใช้รวม DataFrames หลายตัวเข้าด้วยกัน โดยการกำหนด axis=1 จะทำให้รวมตามแนวคอลัมน์ (side-by-side) ขณะที่ axis=0 (ค่าเริ่มต้น) จะรวมตามแนวแถว (stack vertically)
ข้อควรระวัง
- หาก DataFrames มีดัชนี (index) ไม่ตรงกัน จะเกิดค่า NaN ในตำแหน่งที่ไม่มีข้อมูลตรงกัน
- คอลัมน์ที่ชื่อซ้ำกันจะถูกเก็บทั้งหมด (อาจต้องจัดการ rename ก่อนรวม)
ตัวอย่างโค้ด
import pandas as pd
# DataFrame แรก
df1 = pd.DataFrame({
"Col1": [10, 20, 30],
"Col2": [40, 50, 60],
"Col3": [70, 80, 90]
}, index=[0, 1, 2])
# DataFrame ที่สอง
df2 = pd.DataFrame({
"Col1": [100, 110, 120],
"Col2": [130, 140, 150],
"Col3": [160, 170, 180]
}, index=[3, 4, 5])
# DataFrame ที่สาม
df3 = pd.DataFrame({
"Col1": [200, 210, 220],
"Col2": [230, 240, 250],
"Col3": [260, 270, 280]
}, index=[6, 7, 8])
print("DataFrame1:\n", df1)
print("\nDataFrame2:\n", df2)
print("\nDataFrame3:\n", df3)
# รวมตามแนวคอลัมน์
res = pd.concat([df1, df2, df3], axis=1)
print("\nรวม 3 DataFrames (axis=1):\n", 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
รวม 3 DataFrames (axis=1):
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
เคล็ดลับ
- ใช้
ignore_index=Trueเพื่อรีเซ็ตดัชนีหลังรวม - ใช้
keysเพื่อสร้าง MultiIndex คอลัมน์แยกแยะแหล่งที่มา - พิจารณาใช้
join='inner'หากต้องการเฉพาะดัชนีที่ตรงกันทั้งหมด