编写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

猜你喜欢