Я сделал в кадре данных, так как его легче создать, но вы можете использовать векторизованный .cumsum
, чтобы ускорить свой код с помощью .loc
для значений == 0. Затем просто найдите длину с помощью len
:
import pandas as pd, numpy as np
s = pd.DataFrame(pd.Series(np.random.randint(2, size=10)))
s['t'] = s[0].cumsum()
o = len(s.loc[s['t']==0])
o
Если вы установите o
= в столбец с s['o'] = o
, то результат будет выглядеть так:
0 t o
0 0 0 2
1 0 0 2
2 1 1 2
3 1 2 2
4 0 2 2
5 1 3 2
6 1 4 2
7 1 5 2
8 1 6 2
9 0 6 2