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

如何将DataFrame按月分组并计算截至当月的累计最高Quantity值

解决方案

步骤说明

针对大规模数据集,优先用Pandas的向量化操作保证效率,具体实现如下:

  1. 生成年月标识列:从Date列提取Month/Year格式(如Jan/2019),用dt.strftime('%b/%Y')完成格式转换。
  2. 按月分组取当月最大值:对每个年月分组,计算该月内Quantity的最大值——原数据是每日记录,每个月可能有多条,先取当月峰值。
  3. 计算累计最大值:对分组后的月度最大值序列,用cummax()计算截至当前月份的全局最高值,直接满足"截至对应月份的Quantity最高值"需求。
  4. 整理输出格式:将结果转换为目标结构的DataFrame。

代码实现

import pandas as pd

# 假设原始DataFrame名为df,且Date列已为datetime类型
# 若Date列未转换为datetime,先执行:df['Date'] = pd.to_datetime(df['Date'])

# 1. 添加年月标识列
df['Month/Year'] = df['Date'].dt.strftime('%b/%Y')

# 2. 按月分组,取当月Quantity的最大值
monthly_max = df.groupby('Month/Year')['Quantity'].max().reset_index()

# 3. 计算截至当月的累计最高值
monthly_max['Till Highest'] = monthly_max['Quantity'].cummax()

# 4. 移除中间列,得到目标DataFrame
result = monthly_max.drop(columns=['Quantity'])

print(result)

输出验证

运行代码后会得到与示例一致的结果:

Month/Year  Till Highest
0    Jan/2019            15
1    Feb/2019            15
2    May/2019            25
3    Jul/2019            25
4    Sep/2019            44
5    Dec/2019            44
6    Apr/2020           111
7    Jun/2020           111

效率说明

所有操作均为Pandas内置的向量化/分组聚合操作,避免了Python循环,在百万级甚至更大规模的数据集上也能保持高效运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:37:35