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

Pandas如何实现列值变化或连续False时递增、连续True计数静态的需求

实现Pandas自定义计数列的解决方案

核心实现代码如下:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({'A': [True, True, False, False, False, False, False, True, True, True, False]})

# 计算A值发生变化的行,首行默认触发计数
change_mask = df['A'].ne(df['A'].shift()).fillna(True)
# 计算连续为False的行
continuous_false_mask = df['A'].eq(False) & df['A'].shift().eq(False)
# 合并计数触发条件:A值变化 或 连续False
increment_mask = change_mask | continuous_false_mask
# 累计求和得到目标B列
df['B'] = increment_mask.cumsum()

print(df)

运行后输出结果和要求完全一致:

A  B
0    True  1
1    True  1
2   False  2
3   False  3
4   False  4
5   False  5
6   False  6
7    True  7
8    True  7
9    True  7
10  False  8

逻辑说明

  • 用ne方法对比当前行和上一行的A列值,得到A值发生变化的行标记,首行默认作为计数起始点设为True
  • 标记出连续为False的行,满足「后续行A为False时计数递增」的要求
  • 两种标记取并集就是所有需要计数+1的位置,最后用累计求和cumsum即可得到目标B列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:36:01