如何在Pandas中按另一列分类透视表并调整结果层级顺序?
解决Pandas透视表层级顺序调整问题
没问题!你想要让TYPE层级在count/sum/mean之后优先展示(也就是让TYPE作为主分组层级,每个TYPE下依次对应聚合指标),其实只需要对转置后的透视表结果调整MultiIndex的层级顺序并重新排序就能实现。
具体操作步骤
- 先执行你原本的透视表代码,得到初始结果:
import pandas as pd # 假设a是你的原始DataFrame result = a.pivot_table(index=['DT'], columns=['TYPE'], values='AMOUNT', aggfunc=['count','sum','mean']).T
- 交换行索引的层级顺序,并重新排序:
# 交换第0层(聚合函数)和第1层(TYPE)的位置,再按索引排序让结构更规整 result = result.swaplevel(0, 1).sort_index()
示例演示
假设你的原始数据是这样的:
data = { 'DT': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02', '2023-01-01'], 'TYPE': ['A', 'B', 'A', 'B', 'A'], 'AMOUNT': [100, 200, 150, 250, 300] } a = pd.DataFrame(data)
执行原始代码得到的初始结果是:
2023-01-01 2023-01-02 count TYPE A 2.0 1.0 B 1.0 1.0 sum TYPE A 400.0 150.0 B 200.0 250.0 mean TYPE A 200.0 150.0 B 200.0 250.0
调整层级后的结果就会变成你想要的结构——TYPE作为主层级,每个TYPE下依次展示count、sum、mean:
2023-01-01 2023-01-02 TYPE A count 2.0 1.0 sum 400.0 150.0 mean 200.0 150.0 B count 1.0 1.0 sum 200.0 250.0 mean 200.0 250.0
这样就完美实现了TYPE层级优先展示的需求啦!
内容的提问来源于stack exchange,提问作者Emil Memmedsoy
相关产品推荐
相关产品推荐

