วันนี้ไปเจอเทคนิคในการยุบ field รวมกัน ให้เหลือ field เดียวครับ จาก 2 fields ที่มีค่าบ้างไม่มีบ้าง เช่น
import numpy as np
df = pd.DataFrame({
"foodstuff": ["apple-martini", "apple-pie", np.nan, np.nan, np.nan],
"type": [np.nan, np.nan, "strawberry-tart", "dessert", np.nan]
})
เราสามารถสั่งบรรทัดเดียวเลยได้ตามนี้
df.rename(columns={"type": "foodstuff"}).stack().unstack()
โค้ดด้านบนทำอะไร?
สิ่งที่โค้ดด้านบนทำก็คือ rename ชื่อ field type
ก่อนให้เป็น foodstuff
เสร็จแล้วก็สั่ง stack
เพื่อดึงเอา column ให้มาเป็นแถว และจากแถวให้ไปเป็น column ซึ่งตรงนี้จะเสมือนกับว่าเราได้กำจัดแถวที่มันเป็น Null หรือ NaN ทิ้งออกไปแล้ว
ถ้าเราลองสั่งแค่ stack
จะได้ผลตามนี้
df.rename(columns={"type": "foodstuff"}).stack().
ซึ่งพอเราสั่ง unstack
มันก็จะดึงแถวกลับไปเป็น column เสมือนกับว่าเรายุบ 2 fields นี้เข้าไปด้วยกัน
เอาเทคนิคนี้มาจาก
งดงามมากครับ