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

如何对布尔列累计统计True值并遇到False时重置计数

连续True值累计计数实现方案

针对布尔列实现连续True计数、遇False重置为0的需求,可根据你的使用场景选择对应实现方法:


1. Pandas DataFrame 实现

如果你用pandas处理表格数据,可直接用分组累加的方案实现:

核心代码

import pandas as pd

# 构造示例数据,可替换为你自己的DataFrame
df = pd.DataFrame({
    'bool': [False, True, True, True, False, True, True, False, False]
})

# 计数逻辑
df['count'] = df['bool'].groupby((~df['bool']).cumsum()).cumsum().astype(int)

运行结果

输出完全符合预期:

bool  count
0  False      0
1   True      1
2   True      2
3   True      3
4  False      0
5   True      1
6   True      2
7  False      0
8  False      0

逻辑说明

  • 用~df['bool']对原布尔列取反,原列的False会变为True,True变为False
  • 对取反后的结果执行cumsum()累加:只有原列是False的时候累加值才会+1,以此把连续的True划分到同一个分组
  • 对每个分组内的原布尔列执行cumsum()累加,天然就能得到同组内连续True的计数,False位置的累加结果为0,刚好符合需求

2. 原生Python列表实现

如果你的数据是Python列表形式,无需依赖第三方库,直接遍历即可:

bool_list = [False, True, True, True, False, True, True, False, False]
count_list = []
current_count = 0
for val in bool_list:
    current_count = current_count + 1 if val else 0
    count_list.append(current_count)

运行后count_list结果为[0, 1, 2, 3, 0, 1, 2, 0, 0],符合需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:15:05