You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python-Pandas如何对透视表排序并保持单列分组结构

多层索引透视表分组内排序实现

问题复现

构造测试DataFrame并生成初始透视表的代码如下:

import pandas as pd
import numpy as np

df = pd.DataFrame({'Year': ['2012','2012','2012','2012','2012','2012','2012','2012','2012','2013', '2013','2013','2013','2013','2013','2013','2013','2013','2013'],
                   'Product':['X','X','X','Y','Z','W','X','X','X','Y','Z','W','Z','Z','W','Y','X','Z', 'Y'],   
                   'Country':['A','B','C','D','A','B','C','D','A','B','C','D','A','B','C','D','A','B', 'A'],                
                   'Units':[44,55,42,57,95,54,27,55,81,54,65,23,89,76,34,12,1,67,8],
                 })

# 按Country、Product分组生成透视表
myPivot1 = pd.pivot_table(df,
                          values = ['Units'], index=['Country', 'Product'],
                          aggfunc=np.sum)
print(myPivot1)

排序需求

保持Country的分组结构不被打乱,每个国家分组内部按照Units字段数值降序排列,预期输出如下:

Units
Country Product       
A       Z          184
        X          126
        Y            8
B       Z          143
        X           55
        W           54
        Y           54
C       X           69
        Z           65
        W           34
D       Y           69
        X           55
        W           23

错误尝试

直接对Units字段做全局排序会打破Country的分组结构,代码和错误输出如下:

myPivot2 = myPivot1.sort_values(('Units'), ascending=False)
print(myPivot2)
Units
Country Product       
A       Z          184
B       Z          143
A       X          126
C       X           69
D       Y           69
C       Z           65
B       X           55
D       X           55
B       W           54
        Y           54
C       W           34
D       W           23
A       Y            8

解决方案

针对多层索引的分组内排序需求,按第一层索引(即Country)分组,再在每个分组内部单独按Units降序排序即可,不会打乱原有Country的分组顺序:

myPivot2 = myPivot1.groupby(level=0, group_keys=False).apply(
    lambda group: group.sort_values('Units', ascending=False)
)
print(myPivot2)

运行代码后输出和预期结果完全一致。

注:group_keys=False参数用于避免分组后额外叠加一层索引,保持和原透视表一致的双层索引结构。

内容的提问来源于stack exchange,提问作者Hookstark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 15:18:13