เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

เพิ่มคอลัมน์ (2)

การใช้ iterrows() เพื่อวนซ้ำทุก observation ใน Pandas DataFrame นั้นเข้าใจง่าย แต่ไม่ค่อยมีประสิทธิภาพนัก เพราะในแต่ละรอบการวนซ้ำ จะมีการสร้าง Pandas Series ใหม่ขึ้นมาเสมอ

หากต้องการเพิ่มคอลัมน์ใน DataFrame โดยการเรียกฟังก์ชันบนคอลัมน์อื่น วิธีที่ดีกว่าคือใช้ apply() แทนการใช้ iterrows() ร่วมกับ for loop

ลองเปรียบเทียบแบบ iterrows() กับแบบ apply() ที่ให้ผลลัพธ์เดียวกันใน DataFrame brics:

for lab, row in brics.iterrows() :
    brics.loc[lab, "name_length"] = len(row["country"])

brics["name_length"] = brics["country"].apply(len)

เราสามารถทำสิ่งคล้ายกันเพื่อเรียกเมธอด upper() กับชื่อทุกรายการในคอลัมน์ country ได้ อย่างไรก็ตาม เนื่องจาก upper() เป็น เมธอด จึงต้องใช้วิธีที่แตกต่างออกไปเล็กน้อย:

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Python ระดับกลาง

ดูคอร์ส

คำแนะนำการฝึกหัด

  • แทนที่ for loop ด้วยโค้ดบรรทัดเดียวที่ใช้ .apply(str.upper) ผลลัพธ์ที่ได้ควรเหมือนเดิม คือเพิ่มคอลัมน์ COUNTRY ลงใน cars โดยมีชื่อประเทศเป็นตัวพิมพ์ใหญ่ทั้งหมด
  • เมื่อเสร็จแล้ว ให้พิมพ์ cars เพื่อตรวจสอบผลลัพธ์

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Import cars data
import pandas as pd
cars = pd.read_csv('cars.csv', index_col = 0)

# Use .apply(str.upper)
for lab, row in cars.iterrows() :
    cars.loc[lab, "COUNTRY"] = row["country"].upper()
แก้ไขและรันโค้ด