如何在pandas pivot_table中重命名aggfunc对应的聚合函数名称?
重命名pivot_table聚合函数的名称
先看你已有的数据和透视表基础代码:
import pandas as pd import numpy as np data = { 'Division': ['A', 'A', 'B', 'B'], 'Perfomer': ['X', 'Y', 'X', 'Y'], 'Completed on time': ['Yes', 'No', 'Yes', 'No'], 'Values': [10, 20, 30, 40] } df = pd.DataFrame(data)
要将透视表中np.sum重命名为Sum of labor costs、len重命名为Number of tasks,有两种常用实现方式:
方法一:创建透视表时直接指定聚合函数名称
通过给aggfunc传入嵌套字典,明确指定目标列的聚合函数及自定义名称:
df_pivot = pd.pivot_table(df, values=['Values'], index=['Division', 'Perfomer'], columns=['Completed on time'], aggfunc={'Values': {'Sum of labor costs': np.sum, 'Number of tasks': len}}, margins=True, fill_value=0)
这种方式会直接生成带有自定义名称的透视表层级,一步到位。
方法二:创建后修改透视表的列层级名称
如果已经生成了原透视表,可以通过修改列MultiIndex的层级名称来调整:
# 先生成原透视表 df_pivot = pd.pivot_table(df, values=['Values'], index=['Division', 'Perfomer'], columns=['Completed on time'], aggfunc=[np.sum, len], margins=True, fill_value=0) # 修改第0层级的名称(对应聚合函数的层级) df_pivot.columns = df_pivot.columns.set_levels(['Sum of labor costs', 'Number of tasks'], level=0)
两种方法都能达到需求效果,可根据实际场景选择。
内容的提问来源于stack exchange,提问作者irina_ikonn
相关产品推荐
相关产品推荐

