I have dataframe like this:

pointswitch_on
ATrue
BTrue
CTrue
AFalse
DFalse
NTrue
OFalse
OFalse
SFalse

I want to add another column which will determine groups of rows that contain the same boolean before switching. Like this:

pointswitch_ongroup
ATrue1
BTrue1
CTrue1
AFalse2
DFalse2
NTrue3
OFalse4
OFalse4
SFalse4

推荐答案

Identify every time there's a change:

  • This is when the current value df.switch_on doesn't equal the previous value df.switch_on.shift().

Then take the cumsum:

  • True is interpreted as 1, and False as 0.
df['group'] = df.switch_on.ne(df.switch_on.shift()).cumsum()
print(df)

Output:

  point  switch_on  group
0     A       True      1
1     B       True      1
2     C       True      1
3     A      False      2
4     D      False      2
5     N       True      3
6     O      False      4
7     O      False      4
8     S      False      4

Python相关问答推荐

Selenium Python,如何在没有“url”的情况下将PDF下载到特定位置

从目录中的多个文本文件加载停用词

如何测量图像中最大分割区域的中心?

计算Pandas 中的连续值组

当sklearn管道中有多种特征 Select 方法时如何获取所选特征的名称?

使用 pandas 从 URL 读取 CSV 时的字节进度

查找掩码的周长坐标

如何保存数组的交错值?

从 Python 中的字典中获取更深层次的键值对

将链接数据帧与其他数据帧一起使用的更快方法 - Python

任意两台发电机的转速差(内置函数)

Pandas:包含对列表的列

当两列中的值在 pyspark 中的组合相同时删除行

从 json 转换为 DataFrames?

根据多列中的字符串值在数据框中创建新行

customtkinker 模块中的 TypeError

求一个月内最大的 n 的平均值,但天必须是唯一的(Pandas )

修改Pandas 插值以排除填充超出限制

Pytorch 中的梯度下降重新分配

为什么这太慢了?