Pandas:如何删除数据透视表中的多重索引
要从 pandas 数据透视表中删除 multiIndex,您可以将values参数与reset_index()函数一起使用:
p.d. pivot_table (df, index=' col1 ', columns=' col2 ', values=' col3 '). reset_index ()
以下示例展示了如何在实践中使用此语法。
示例:删除 Pandas 数据透视表中的多重索引
假设我们有以下 pandas DataFrame,其中包含有关各种篮球运动员的信息:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'F', 'G', 'F', 'F', 'F'], ' points ': [4, 4, 6, 8, 9, 5, 5, 12]}) #view DataFrame print (df) team position points 0 AG 4 1 GA 4 2 AF 6 3AF 8 4 BG 9 5 BF 5 6 BF 5 7 BF 12
现在假设我们创建以下数据透视表来总结按团队和位置划分的平均分值:
#create pivot table to summarize mean points by team and position
p.d. pivot_table (df, index=' team ', columns=' position ')
points
FG position
team
At 7.000000 4.0
B 7.333333 9.0
生成的数据透视表按团队和位置总结了平均分值,但包含一个 multiIndex。
要删除multiIndex,我们可以使用pivot_table()函数中的values参数,并在末尾添加reset_index() :
#create pivot table to summarize mean points by team and position
p.d. pivot_table (df, index=' team ', columns=' position ', values=' points '). reset_index ()
position team F G
0 to 7.000000 4.0
1 B 7.333333 9.0
生成的数据透视表按团队和位置总结了平均分值,并且不再具有多重索引。
请注意, pivot_table()函数默认计算平均值。
要计算另一个指标(例如总和),请使用aggfunc参数,如下所示:
#create pivot table to summarize sum of points by team and position
p.d. pivot_table (df, index=' team ', columns=' position ', values=' points ',
aggfunc=' sum '). reset_index ()
position team FG
0 to 14 8
1 B 22 9
生成的数据透视表按球队和位置汇总了分值总和,并且没有多重索引。
注意:您可以在此处找到 pandas hub_table()函数的完整文档。
其他资源
以下教程解释了如何在 pandas 中执行其他常见操作:
Pandas:如何向数据透视表添加过滤器
Pandas:如何按列中的值对数据透视表进行排序
Pandas:如何将小计添加到数据透视表