Pandas 数据框中的分组布尔值

Group boolean values in Pandas Dataframe

我有一个 Dataframe,在一列中有一系列随机的 True、False:

import pandas as pd
df = pd.DataFrame(data={'A':[True, False, True, True, False, False, True, False, True, False, False]})
df
一个
0 正确
1
2 正确
3 正确
4
5
6 正确
7
8 正确
9
10

我想要这个:(不知道如何用简单的词来解释它)

一个 B
0 正确 1
1 2
2 正确 2
3 正确 2
4 3
5 错误 3
6 正确 3
7 4
8 正确 4
9 5
10 错误 5

我尝试了以下命令,但没有成功: df[A].shift() df[A].diff() df[A].eq()

非常感谢您的帮助。 马蒂亚斯

IIUC,你可以试试:

df['B'] = (df.A.shift() & ~df.A).cumsum() + 1
# OR df['B'] = (df.A.shift() & ~df.A).cumsum().add(1)

输出:

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

一点逻辑diff

(~df.A.astype(int).diff().ne(-1)).cumsum()+1
Out[234]: 
0     1
1     2
2     2
3     2
4     3
5     3
6     3
7     4
8     4
9     5
10    5
Name: A, dtype: int32