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

如何在Pandas DataFrame中按指定月组计算分组累积和?

解决Pandas按自定义季度分组计算组内kpi累积和的问题

问题分析

你的代码当前仅按kpi字段全局计算re_o的累积和,没有结合自定义的季度分组规则,导致累积值跨季度累加,不符合预期需求。需要同时按自定义季度组和kpi两个维度分组,再计算组内累积和。

解决方案

  1. 定义自定义季度的映射关系,将每个月份对应到指定分组;
  2. 为DataFrame新增季度分组列;
  3. 按季度分组+kpi组合分组,计算组内re_o的累积和。

完整代码

import pandas as pd

data = {
    'month': ['April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', 'January', 'February', 'March'],
    'kpi': ['sales', 'sales quantity', 'sales', 'sales', 'sales', 'sales', 'sales', 'sales quantity', 'sales', 'sales', 'sales', 'sales'],
    're_o': [1, 1, 1, 11, 11, 11, 12, 12, 12, 13, 13, 13]
}

df = pd.DataFrame(data)

# 定义自定义季度分组映射
quarter_map = {
    'April': 'Q1', 'May': 'Q1', 'June': 'Q1',
    'July': 'Q2', 'August': 'Q2', 'September': 'Q2',
    'October': 'Q3', 'November': 'Q3', 'December': 'Q3',
    'January': 'Q4', 'February': 'Q4', 'March': 'Q4'
}

# 新增季度分组列
df['quarter_group'] = df['month'].map(quarter_map)

# 按季度分组和kpi分组,计算组内累积和
df['Q-Total'] = df.groupby(['quarter_group', 'kpi'], sort=False)['re_o'].cumsum()

# 可选:删除临时的quarter_group列
# df = df.drop('quarter_group', axis=1)

print(df)

运行结果

month             kpi  re_o quarter_group  Q-Total
0       April           sales     1            Q1        1
1         May  sales quantity     1            Q1        1
2        June           sales     1            Q1        2
3        July           sales    11            Q2       11
4      August           sales    11            Q2       22
5   September           sales    11            Q2       33
6     October           sales    12            Q3       12
7    November  sales quantity    12            Q3       12
8    December           sales    12            Q3       24
9     January           sales    13            Q4       13
10   February           sales    13            Q4       26
11      March           sales    13            Q4       39

关键说明

  • 通过quarter_map将每个月份映射到自定义分组,确保同一季度组的月份归为一类;
  • 使用groupby(['quarter_group', 'kpi'])实现双维度分组,保证累积和仅在同一季度组+同一kpi内计算;
  • sort=False保持原始数据的顺序,避免分组后打乱行顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:45:36