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

如何用Pandas基于布尔序列标记DataFrame中的行分组

问题:为连续相同布尔值的行添加分组标记

原始DataFrame:

pointswitch_on
ATrue
BTrue
CTrue
AFalse
DFalse
NTrue
OFalse
OFalse
SFalse

预期结果:为连续相同的switch_on值添加分组标记,每次布尔值切换时分组号递增:

pointswitch_ongroup
ATrue1
BTrue1
CTrue1
AFalse2
DFalse2
NTrue3
OFalse4
OFalse4
SFalse4

解决方案

使用Pandas的ne()和cumsum()方法即可实现:

import pandas as pd

# 构造原始数据
data = {
    'point': ['A', 'B', 'C', 'A', 'D', 'N', 'O', 'O', 'S'],
    'switch_on': [True, True, True, False, False, True, False, False, False]
}
df = pd.DataFrame(data)

# 生成分组列
df['group'] = df['switch_on'].ne(df['switch_on'].shift()).cumsum()

# 查看结果
print(df)

逻辑说明

  • df['switch_on'].shift():将switch_on列向下偏移一行,用于和当前行比较
  • ne():判断当前行与上一行的switch_on值是否不相等,值切换时返回True
  • cumsum():对True(视为1)和False(视为0)进行累加,每次值切换时累加1,最终得到连续相同值的分组编号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:03:36