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

Pandas GroupBy分组内计算连续相同Result值的Streak累计值实现方法

Pandas分组内连续相同Result值的Streak计算实现

实现代码

import pandas as pd

# 构造示例输入
df_input = pd.DataFrame({
    'Name': ['A','B','A','A','C','C','B','A','B','C'],
    'Result': [1,1,-1,-1,1,1,-1,1,-1,1]
})

# 核心计算逻辑
# 1. 生成同分组内连续相同Result的块标识
df_input['block'] = df_input.groupby('Name')['Result'].transform(lambda x: (x != x.shift()).cumsum())
# 2. 按名称+块双重分组累加得到Streak
df_input['Streak'] = df_input.groupby(['Name', 'block'])['Result'].cumsum()

# 清理辅助列(可选)
df_input.drop('block', axis=1, inplace=True)

逻辑说明

  • 先按Name字段分组,对比每一行和同分组内上一行的Result值,值不同或者是分组首行时标记为新的连续块,通过累加布尔值给每个连续块生成唯一标识
  • 再按Name和块标识双重分组,对Result做累加,相同连续块内的值会逐行累计,新块则从当前Result值开始计算,完全匹配要求的计算规则
    运行后得到的结果和你给出的示例输出完全一致,可直接验证使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:36:05