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

在Pandas中按分组统计连续相同值的滚动未变更次数

解决Pandas分组内连续相同值的累计计数问题

要实现每个group分组内独立统计连续相同col值的累计次数,你需要对原代码进行调整,核心是先按group分组,再在每个组内识别连续相同值的片段,最后完成累计计数。

解决方案代码

import pandas as pd

# 构造输入数据
df = pd.DataFrame({'group':list('ABABABABABABABAB'), 'col':list('aaaaaaaabbbbaabb')})

# 1. 按group分组,在每个组内标记连续相同col值的分组键
# 每个组内,当col与前一行不同时,生成新的分组标识
df['consecutive_group'] = df.groupby('group')['col'].apply(lambda x: x.ne(x.shift()).cumsum())

# 2. 按group和consecutive_group组合分组,计算累计计数(从0开始)
df['count'] = df.groupby(['group', 'consecutive_group']).cumcount()

# 验证结果
df['count_wanted'] = list('0011223300110000')
print(df)

代码说明

  • 第一步的groupby('group')['col'].apply(...):确保只在同一个group内部判断col值是否和前一行不同,生成的consecutive_group是每个group内连续相同值的分组标记。
  • 第二步的groupby(['group', 'consecutive_group']).cumcount():在每个group的连续值片段内,从0开始累计计数,完全匹配需求中的输出要求。

结果验证

运行代码后,count列会和count_wanted列完全一致,实现了每个group独立统计连续相同值的次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:20:34