Pandas 2 列布尔值之间的条件滚动计数器

Pandas conditional rolling counter between 2 columns of boolean values

在此先感谢您帮助像我这样的 python 新手。

我想在不使用愚蠢的慢循环的情况下在“计数”列中实现以下结果。

我确信可以对其进行矢量化。有什么建议吗?

再次感谢!

       A       B       count
    0  False   False     0
    1  True    False     1
    2  False   False     1 
    3  True    False     2
    4  False   True      1 # True value in the other column: reset the counter
    5  False   False     1
    6  True    False     1 # True value in the other column: reset the counter
    7  False   True      1 # True value in the other column: reset the counter
    8  False   True      2
    9  False   False     2
   10  False   True      3

你可以试试:

df['count'] = (df.groupby(df.A.cumsum())['B'].cumsum() + df.groupby(df.B.cumsum())['A'].cumsum())

输出:

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