Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python Pandas: เพิ่มแถวข้อมูลจากลิสต์เข้า DataFrame ด้วย append()

บทนำ

หมายเหตุสำคัญ: 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 ครั้งเดียวสุดท้าย