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

如何统计Pandas Dataframe指定列中当前连续出现的0的个数

实现方法

我们可以通过pandas的分组累加功能实现需求,完整实现代码如下:

import numpy as np
import pandas as pd

# 构造示例DataFrame
np.random.seed(2021)
a = np.random.randint(0, 2, 20)
df = pd.DataFrame(a, columns=['No.'])

# 计算连续0的计数
df['count'] = df['No.'].groupby(df['No.'].eq(1).cumsum()).cumcount().add(1).where(df['No.'].eq(0), 0)

# 输出结果
print(df)

逻辑说明

核心思路是通过分组标记把连续的0归到同一组,再对每组内的元素按顺序计数,最后将值为1的行计数置为0,各步骤作用如下:

  • df['No.'].eq(1):判断当前行是否为1,得到布尔序列
  • .cumsum():对布尔序列做累加,每遇到1就会让累加值+1,由此将连续的0划分到同一个分组中
  • groupby(上述分组键):按生成的分组键对数据分组
  • .cumcount():返回每个分组内元素的顺序编号,默认从0开始
  • .add(1):将编号加1,匹配从1开始计数的需求
  • .where(df['No.'].eq(0), 0):保留值为0的行的计数结果,值为1的行计数统一设置为0

运行上述代码后,输出结果和你需求的预期结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:24:07