บทนำ
หมายเหตุสำคัญ: DataFrame.append() ถูก deprecated منذ Pandas 1.4.0 และถูกลบใน Pandas 2.0 ควรใช้ pd.concat() หรือ loc[] แทน
วิธีเก่า (Deprecated): append()
import pandas as pd
# สร้าง DataFrame
Team = [
['India', 1, 100],
['Australia', 2, 85],
['England', 3, 75],
['New Zealand', 4, 65],
['South Africa', 5, 50]
]
df = pd.DataFrame(Team, columns=['Country', 'Rank', 'Points'])
# แถวที่จะเพิ่ม
new_row = [['Sri Lanka', 6, 40]]
# ⚠️ DEPRECATED - อย่าใช้ในโค้ดใหม่
df = df.append(pd.DataFrame(new_row, columns=['Country', 'Rank', 'Points']),
ignore_index=True)
วิธีแนะนำ 1: pd.concat() (แทน append)
# สร้าง DataFrame ใหม่สำหรับแถวที่จะเพิ่ม
new_df = pd.DataFrame([['Sri Lanka', 6, 40]], columns=['Country', 'Rank', 'Points'])
# รวมด้วย concat
df = pd.concat([df, new_df], ignore_index=True)
print(df)
วิธีแนะนำ 2: loc[] (เพิ่มแถวเดี่ยว)
# เพิ่มแถวเดียวโดยตรง
df.loc[len(df)] = ['Sri Lanka', 6, 40]
print(df)
วิธีแนะนำ 3: สร้างลิสต์ก่อน แล้วสร้าง DataFrame ครั้งเดียว (เร็วที่สุด)
# สำหรับเพิ่มหลายแถว: สะสมในลิสต์ก่อน
all_rows = [
['India', 1, 100],
['Australia', 2, 85],
['England', 3, 75],
['New Zealand', 4, 65],
['South Africa', 5, 50],
['Sri Lanka', 6, 40], # เพิ่มตรงนี้
['Bangladesh', 7, 30]
]
df = pd.DataFrame(all_rows, columns=['Country', 'Rank', 'Points'])
print(df)
เปรียบเทียบประสิทธิภาพ
| วิธี | ความเร็ว | เหมาะสำหรับ | สถานะ |
|---|---|---|---|
| append() | ช้า (copy ทุกครั้ง) | — | ❌ Deprecated |
| pd.concat() | ปานกลาง | รวมหลาย DataFrame | ✅ แนะนำ |
| loc[len(df)] | เร็ว | เพิ่มแถวเดี่ยว | ✅ แนะนำ |
| List → DataFrame | เร็วที่สุด | สร้างครั้งเดียว/เพิ่มมาก | ✅ Best Practice |
ตัวอย่างครบถ้วน: เพิ่มหลายแถวพร้อมกัน
import pandas as pd
df = pd.DataFrame({
'Country': ['India', 'Australia'],
'Rank': [1, 2],
'Points': [100, 85]
})
# เพิ่มหลายแถวพร้อมกันด้วย concat
new_rows = pd.DataFrame({
'Country': ['England', 'New Zealand'],
'Rank': [3, 4],
'Points': [75, 65]
})
df = pd.concat([df, new_rows], ignore_index=True)
print(df)
สรุป
- ❌ อย่าใช้
df.append()- ถูกลบใน Pandas 2.0 - ✅ ใช้
pd.concat([df, new_df], ignore_index=True)สำหรับรวม DataFrame - ✅ ใช้
df.loc[len(df)] = rowสำหรับเพิ่มแถวเดี่ยว - ✅ Best Practice: สะสมข้อมูลในลิสต์/ดิกชันนารี แล้วสร้าง DataFrame ครั้งเดียวสุดท้าย