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

Pandas如何用min、max函数按月份分组统计各销售列最值

Pandas按月分组批量计算多列最值实现方案

不需要逐列单独计算min、max后再拼接,Pandas原生的分组聚合接口可以一次性完成所有列的最值计算,代码简洁且运行效率更高。

具体实现流程

  • 首先导入依赖、构造和你描述一致的示例销售数据(实际使用时替换成你自己的数据源即可)
import pandas as pd

# 示例数据:Month为月份列,其余三列为对应品类销量,1-3月各2条记录
sales_df = pd.DataFrame({
    'Month': [1, 1, 2, 2, 3, 3],
    'T-shirt Sales': [120, 98, 156, 172, 201, 188],
    'Hat Sales': [45, 52, 67, 59, 78, 83],
    'short Sales': [89, 76, 132, 145, 198, 176]
})
  • 核心逻辑:按月份分组后,直接传入要计算的统计函数列表,所有选中的销售列会自动批量计算最值,无需逐列处理
# 按Month分组,对三个销售列同时计算最小值、最大值
summary_df = sales_df.groupby('Month')[['T-shirt Sales', 'Hat Sales', 'short Sales']].agg(['min', 'max'])
  • 可选优化:默认输出是多层列索引,如果想要扁平化的普通列名方便后续使用,加一行处理即可
# 拍平多层列名,格式为「品类名_统计值」,比如T-shirt Sales_min
summary_df.columns = [f'{col}_{stat}' for col, stat in summary_df.columns]
summary_df = summary_df.reset_index()

补充说明

你提到的「获取唯一月份值列表」需求不需要额外提前处理,groupby操作本身会自动对分组列去重后按唯一值聚合。如果确实需要单独提取唯一月份列表,直接执行sales_df['Month'].unique().tolist()即可拿到结果。

这种实现方式比逐列计算后再拼接DataFrame的写法代码量少60%以上,且是Pandas优化过的原生向量化计算,运行速度远快于逐列循环+拼接的写法,也不会出现索引对齐错误的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 07:51:19