编写Python程序以不同方式重塑给定的数据框
我们可以通过重塑数据帧melt(),stack(),unstack()和pivot()功能。
解决方案1
定义一个数据框。
Applymelt()函数将宽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()功能可增加数据框中索引的级别。它的定义如下
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()功能以根据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