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

条件为真启动计数、下次为真重置的count列计算方法

实现方案

核心逻辑分三步处理:

  • 首个TRUE出现前的FALSE行,count列留空
  • 每遇到bool=TRUE的行,count固定为0,同时重置计数起点
  • 相邻两个TRUE之间的FALSE行,从1开始逐行递增;连续出现TRUE时每一行都重置为0

以Python pandas环境为例,计算代码如下:

import pandas as pd

# 加载/构造源数据,这里用示例数据做演示
df = pd.DataFrame({
    'bool': [False, False, True, False, False, False, True, False, True, True]
})

# 1. 生成计数周期分组标签:每遇到一次TRUE,分组标签值+1,同一段计数周期的行归属同一分组
df['group_tag'] = df['bool'].cumsum()
# 2. 分组内按行顺序生成序号,序号减1让TRUE所在行的计数值为0,后续行依次递增
df['count'] = df.groupby('group_tag').cumcount() - 1
# 3. 把第一个TRUE之前的行(分组标签为0)的count值置空
df.loc[df['group_tag'] == 0, 'count'] = None
# 清理辅助列
df = df.drop(columns='group_tag')

执行后得到的结果和预期完全一致:

索引boolcount
0FALSENone
1FALSENone
2TRUE0
3FALSE1
4FALSE2
5FALSE3
6TRUE0
7FALSE1
8TRUE0
9TRUE0

这个写法天然兼容所有边界场景:开头任意长度的连续FALSE、连续多个TRUE、两个TRUE之间间隔任意数量FALSE都能正确计算,不需要手动写循环遍历,执行性能更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:57:17