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

Python - เพิ่มรายการ Dictionary ลงใน Pandas DataFrame ที่มีอยู่แล้ว

การเพิ่มข้อมูลใหม่เข้าไปใน DataFrame ที่สร้างไว้แล้ว สามารถทำได้โดยใช้เมธอด append() (หมายเหตุ: ใน Pandas เวอร์ชันใหม่แนะนำให้ใช้ pd.concat() แทน เนื่องจาก append() ถูก deprecated แล้ว)

ขั้นตอนการทำงาน

1. สร้าง DataFrame เริ่มต้น

import pandas as pd

dataFrame = pd.DataFrame({
    "Car": ['BMW', 'Audi', 'XUV', 'Lexus', 'Volkswagen'],
    "Place": ['Delhi', 'Bangalore', 'Pune', 'Chandigarh', 'Mumbai'],
    "Units": [100, 150, 50, 110, 90]
})

2. สร้างรายการ Dictionary ที่ต้องการเพิ่ม

new_data = [
    {'Car': 'Mustang', 'Place': 'Hyderabad', 'Units': 60},
    {'Car': 'Tesla', 'Place': 'Kerala', 'Units': 30},
    {'Car': 'RollsRoyce', 'Place': 'Punjab', 'Units': 70},
    {'Car': 'Bentley', 'Place': 'Gujarat', 'Units': 80}
]

3. เพิ่มข้อมูลด้วย append() (รุ่นเก่า)

# วิธีเก่า (deprecated ใน Pandas 2.0+)
dataFrame = dataFrame.append(new_data, ignore_index=True, sort=False)

4. วิธีแนะนำใหม่: ใช้ pd.concat()

# แปลง list of dicts เป็น DataFrame ก่อน
new_df = pd.DataFrame(new_data)

# รวม DataFrame ทั้งสอง
dataFrame = pd.concat([dataFrame, new_df], ignore_index=True)

โค้ดตัวอย่างสมบูรณ์ (ใช้ concat)

import pandas as pd

# DataFrame เดิม
dataFrame = pd.DataFrame({
    "Car": ['BMW', 'Audi', 'XUV', 'Lexus', 'Volkswagen'],
    "Place": ['Delhi', 'Bangalore', 'Pune', 'Chandigarh', 'Mumbai'],
    "Units": [100, 150, 50, 110, 90]
})
print("DataFrame เดิม:\n", dataFrame)

# ข้อมูลใหม่
new_data = [
    {'Car': 'Mustang', 'Place': 'Hyderabad', 'Units': 60},
    {'Car': 'Tesla', 'Place': 'Kerala', 'Units': 30},
    {'Car': 'RollsRoyce', 'Place': 'Punjab', 'Units': 70},
    {'Car': 'Bentley', 'Place': 'Gujarat', 'Units': 80}
]
print("\nข้อมูลใหม่:\n", new_data)

# เพิ่มข้อมูลด้วย concat (วิธีแนะนำ)
new_df = pd.DataFrame(new_data)
dataFrame = pd.concat([dataFrame, new_df], ignore_index=True)

print("\nDataFrame หลังเพิ่มข้อมูล:\n", dataFrame)

ผลลัพธ์

DataFrame เดิม:
        Car      Place  Units
0       BMW     Delhi    100
1      Audi  Bangalore    150
2       XUV      Pune     50
3     Lexus  Chandigarh   110
4  Volkswagen    Mumbai     90

DataFrame หลังเพิ่มข้อมูล:
        Car      Place  Units
0       BMW     Delhi    100
1      Audi  Bangalore    150
2       XUV      Pune     50
3     Lexus  Chandigarh   110
4  Volkswagen    Mumbai     90
5   Mustang  Hyderabad     60
6     Tesla     Kerala     30
7  RollsRoyce    Punjab     70
8    Bentley   Gujarat     80

สรุป

  • ใช้ pd.concat() แทน append() เพื่อความเข้ากันได้กับ Pandas เวอร์ชันใหม่
  • ignore_index=True จะรีเซ็ต index ใหม่ต่อเนื่อง
  • คอลัมน์ต้องตรงกันทั้งชื่อและลำดับ (หรือใช้ sort=True เพื่อจัดเรียงอัตโนมัติ)