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

Pandas按月份分组计算上一月最大营收的实现方法

解决方案

核心逻辑是先计算出每个月的最大营收值,对月度最大值整体偏移1个单位得到上月最大值,再将上月最大值按月份匹配回原数据集的每一行,具体实现如下:

前置条件

确保date列已经转换为Pandas datetime类型,若未转换可先执行:

df['date'] = pd.to_datetime(df['date'])

实现代码

# 提取年月标识,避免跨年度时单独取月份出现匹配错误
df['year_month'] = df['date'].dt.to_period('M')
# 计算每个月的最大营收
monthly_max = df.groupby('year_month')['revenue'].max()
# 对月度最大值整体偏移1位,得到每个月对应的上月最大营收
last_month_max = monthly_max.shift(1)
# 将上月最大营收映射回原数据的对应行
df['max'] = df['year_month'].map(last_month_max)
# 可选:删除辅助生成的year_month列
df = df.drop('year_month', axis=1)

原方法问题说明

你之前直接对transform返回的结果加shift()不生效,是因为transform会返回和原DataFrame长度完全一致的序列,直接偏移是逐行移动,而非按整个月份分组整体偏移。先聚合得到每个月唯一的最大值序列后再偏移,就能实现按分组整体偏移的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:54:05