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

如何按月份顺序而非字母序对Pandas分组结果排序?

按月份自然顺序排序分组结果

方案1:提前将月份设为有序分类

把month列定义为带指定顺序的分类类型,后续分组时会自动遵循这个自然顺序,不用额外排序:

import pandas as pd

# 先定义好月份的自然顺序
month_order = ['January', 'February', 'March', 'April']
month = ['January','February','March','April','January','February','March','April']
sales = [10,100,130,145,13409,670,560,40]

# 创建DataFrame时,将month转为有序分类
df = pd.DataFrame({
    'month': pd.Categorical(month, categories=month_order, ordered=True),
    'sales': sales
})

# 分组求均值,结果直接按月份顺序输出
result = df.groupby('month')['sales'].mean()
print(result)

方案2:分组后重新索引排序

如果已经有现成的DataFrame,也可以在分组计算完成后,用reindex指定月份顺序来调整结果:

import pandas as pd

month = ['January','February','March','April','January','February','March','April']
sales = [10,100,130,145,13409,670,560,40]
df = pd.DataFrame({'month': month, 'sales': sales})

month_order = ['January', 'February', 'March', 'April']
# 分组后用reindex按指定顺序重排
result = df.groupby('month')['sales'].mean().reindex(month_order)
print(result)

原代码问题说明

你原来用的sort_values()是按销售均值的数值大小排序,而默认字符串类型的月份会按字母顺序排列(比如April因A开头会排在最前),所以必须手动指定月份的自然顺序才能得到想要的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 15:52:11