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