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

เขียนโปรแกรม Python เพื่อปรับแต่ง dataframe ที่กำหนดในรูปแบบต่างๆ


เราสามารถสร้าง 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