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

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

บทนำ

บทความนี้สาธิต 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 → DataFramepd.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 ครั้งเดียว