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

如何在分组操作中按条件实现遇X重置的累计计数?

实现按X重置的非X值累计计数

可以用Pandas的分组和累计计数功能实现需求,核心思路是先按X的出现划分独立分组,再在每个分组内对非X行计数,X行直接设为0。

步骤1:构造示例数据

import pandas as pd

data = {'Key': ['D', 'X', 'B', 'C', 'D', 'X', 'A', 'C', 'X', 'X']}
df = pd.DataFrame(data)

步骤2:生成分组并计算累计值

# 按X的出现创建分组标识,每遇到一个X就开启新分组
group_ids = (df['Key'] == 'X').cumsum()
# 每个分组内从1开始累计计数,再把X对应的行设为0
df['Res'] = df.groupby(group_ids).cumcount() + 1
df['Res'] = df['Res'].where(df['Key'] != 'X', 0)

最终结果

运行后得到的DataFrame与示例完全一致:

Key  Res
0    D    1
1    X    0
2    B    1
3    C    2
4    D    3
5    X    0
6    A    1
7    C    2
8    X    0
9    X    0

代码解释

  • (df['Key'] == 'X').cumsum():通过对X的布尔值累加,把连续的非X行归为同一组,每出现一个X,组号就递增,确保后续非X行进入新的计数周期。
  • groupby(group_ids).cumcount() + 1:让每个分组内的行从1开始计数,避免默认的0起步。
  • where(df['Key'] != 'X', 0):把所有Key为X的行的Res值替换为0,匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:41:45