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
在此先感谢您帮助像我这样的 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