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

Pandas如何为连续True分组分配标签,False值统一标记为0?

Pandas实现连续True值簇标签分配的方法

完整实现代码

import pandas as pd

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

# 核心逻辑
# 识别连续True簇的起始位置并累加计数
df['Label'] = (df['Value'] & df['Value'].ne(df['Value'].shift())).cumsum()
# 所有False对应的标签统一置为0
df.loc[~df['Value'], 'Label'] = 0

输出结果验证

运行上述代码后得到的df和需求完全匹配:

Value  Label
0   True      1
1   True      1
2  False      0
3  False      0
4  False      0
5   True      2
6   True      2
7  False      0
8   True      3
9   True      3

逻辑说明

  • df['Value'].shift()将Value列整体下移一行,用于和当前行值做对比
  • df['Value'].ne(df['Value'].shift())返回布尔序列,当前行和上一行Value不同时为True,定位值变化的位置
  • 和df['Value']做与运算后,仅保留连续True簇的起始位置为True,其余位置为False
  • 对上述布尔序列做累加(cumsum),每遇到一个新的True簇起始位置计数加1,同一簇的计数保持一致
  • 最后将所有Value为False的行的Label统一赋值为0即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:45:04