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

如何用Python Pandas实现首0触发的values列1值计数器

Pandas实现指定规则的1计数生成

核心规则

  • 首个0出现前的所有1,计数值为0
  • 首个0之后:遇到1则计数器递增,遇到0则重置为0

代码实现

import pandas as pd

# 构造示例数据(可替换为实际业务数据)
df = pd.DataFrame({
    'Values': [1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1]
})

# 定位第一个0的索引位置,作为计数逻辑的分界点
first_zero_idx = df[df['Values'] == 0].index[0]

# 初始化计数列,先全部设为0,直接满足首个0前的计数规则
df['生成的计数值'] = 0

# 生成分组标识:每次遇到0则分组编号+1,把连续的1块划分为独立分组
groups = (df['Values'] == 0).cumsum()

# 对第一个0之后的数据,按分组累加1的计数,自动实现遇1递增、遇0重置的效果
df.loc[first_zero_idx:, '生成的计数值'] = df.loc[first_zero_idx:].groupby(groups)['Values'].cumsum()

# 输出结果
print(df)

代码说明

  1. 分界点定位:通过筛选第一个0的索引,精准区分前后两种计数逻辑的适用范围
  2. 初始值设置:直接将计数列全部设为0,一步满足“首个0前所有1计为0”的要求
  3. 分组逻辑:利用cumsum()生成分组编号,把每个连续的1块和后面的0划分为一组,确保每组内的计数独立
  4. 分组累加:对分界点后的数据按分组做累加,1的累加值自然递增,0的累加值保持为0,完美匹配规则

运行代码后输出结果与示例完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:35:32