เราสามารถสร้าง dataframe ใหม่ได้โดยใช้ฟังก์ชัน melt(),stack(),unstack() และ pivot()
โซลูชันที่ 1
-
กำหนดดาต้าเฟรม
-
ใช้ฟังก์ชัน melt() เพื่อแปลงคอลัมน์ dataframe แบบกว้างเป็นแถว มีการกำหนดไว้ด้านล่าง
df.melt()
ตัวอย่าง
มาดูโค้ดด้านล่างเพื่อทำความเข้าใจกันดีกว่า −
import pandas as pd df = pd.DataFrame({'Id':[1,2,3],'Age':[13,14,13],'Mark':[80,90,85]}) print("Dataframe is:\n",df) print(df.melt())
ผลลัพธ์
Dataframe is: Id Age Mark 0 1 13 80 1 2 14 90 2 3 13 85 variable value 0 Id 1 1 Id 2 2 Id 3 3 Age 13 4 Age 14 5 Age 13 6 Mark 80 7 Mark 90 8 Mark 85
โซลูชันที่ 2
-
กำหนดดาต้าเฟรม
-
ใช้ฟังก์ชัน stack() เพื่อเพิ่มระดับของดัชนีใน dataframe มีการกำหนดไว้ด้านล่าง
df.stack().to_frame()
-
หากคุณต้องการย้อนกลับการเปลี่ยนแปลง คุณสามารถใช้ unstack()
df.unstack().to_frame()
ตัวอย่าง
มาดูการใช้งานด้านล่างเพื่อความเข้าใจที่ดีขึ้น -
import pandas as pd df = pd.DataFrame({'Id':[1,2,3],'Age':[13,14,13],'Mark':[80,90,85]}) print("Dataframe is:\n",df) print(df.stack().to_frame()) print(df.unstack().to_frame())
ผลลัพธ์
Dataframe is: Id Age Mark 0 1 13 80 1 2 14 90 2 3 13 85 0 0 Id 1 Age 13 Mark 80 1 Id 2 Age 14 Mark 90 2 Id 3 Age 13 Mark 85 0 Id 0 1 1 2 2 3 Age 0 13 1 14 2 13 Mark 0 80 1 90 2 85
โซลูชันที่ 3
-
กำหนดดาต้าเฟรม
-
ใช้ฟังก์ชัน pivot() เพื่อปรับโครงสร้าง dataframe ตามคอลัมน์ Id
df.pivot(columns='Id')
ตัวอย่าง
มาดูการใช้งานด้านล่างเพื่อความเข้าใจที่ดีขึ้น -
import pandas as pd df = pd.DataFrame({'Id':[1,2,3],'Age':[13,14,13],'Mark':[80,90,85]}) print("Dataframe is:\n",df) print(df.pivot(columns='Id'))
ผลลัพธ์
Dataframe is: Id Age Mark 0 1 13 80 1 2 14 90 2 3 13 85 Age Mark Id 1 2 3 1 2 3 0 13.0 NaN NaN 80.0 NaN NaN 1 NaN 14.0 NaN NaN 90.0 NaN 2 NaN NaN 13.0 NaN NaN 85.0