假设我有一个像这样的Pandas系列布尔值。增加阵列中的连续正数组/
vals = pd.Series([0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1]).astype(bool)
>>> vals
0 False
1 False
2 False
3 True
4 True
5 True
6 True
7 False
8 False
9 True
10 True
11 False
12 True
13 True
14 True
dtype: bool
我想打开这个布尔系列为一系列其中每个组的1的适当列举,像这样
0 0
1 0
2 0
3 1
4 1
5 1
6 1
7 0
8 0
9 2
10 2
11 0
12 3
13 3
14 3
我怎么能这样做有效地?
我已经能够手动这样做了,循环遍历Python级别的序列并递增,但是这显然很慢。我正在寻找一个矢量化的解决方案 - 我看到this answer from unutbu涉及在NumPy中增加群组的分裂,并试图让它与某种cumsum
一起工作,但目前为止尚未成功。