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

Pandas分组累计求和达指定阈值时返回对应列值的实现方法

Pandas实现分组累计和达标值提取方案

核心逻辑

按ID+item双维度分组后计算金额累计值,定位每个分组内累计和首次达到阈值的对应level,最后按item维度聚合输出指定结构字典。

完整实现代码

import pandas as pd

# 构造原始数据集
df = pd.DataFrame({
    'ID': [1, 1, 2, 2, 2, 2, 3, 3],
    'item': [1, 1, 4, 9, 4, 4, 4, 4],
    'amount': [10, 10, 15, 30, 10, 10, 10, 10],
    'level': [5, 10, 5, 8, 10, 20, 4, 6]
})

# 配置固定阈值
THRESHOLD = 20

# 步骤1:计算分组内amount的累计和
df['cum_amount'] = df.groupby(['ID', 'item'])['amount'].cumsum()

# 步骤2:提取每个分组累计和首次达标对应的level
# 先筛出累计和≥阈值的记录,再取每个分组的第一条(即首次达标的记录)
target_rows = df[df['cum_amount'] >= THRESHOLD].groupby(['ID', 'item']).first().reset_index()

# 步骤3:按item聚合为列表,转成要求的字典结构
res = target_rows.groupby('item')['level'].apply(list).to_dict()

运行结果

执行代码后输出的res完全匹配预期:

{1: [10], 4: [10, 6], 9: [8]}

补充说明

  • 计算累计和时默认按DataFrame原始行顺序累加,如果需要按level排序后再算累计,可以在分组前先按ID、item、level排序
  • 若某组累计总和始终达不到设定阈值,该组数据不会被纳入最终结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:15:45