Я пытаюсь подсчитать продолжительные дни в данных возврата капитала, поэтому, если положительный день равен 1, а отрицательный - 0, список y=[0,0,1,1,1,0,0,1,0,1,1]
должен возвращать z=[0,0,1,2,3,0,0,1,0,1,2]
.
Я пришел к решению, которое является опрятным с точки зрения количества строк кода, но очень медленно:
import pandas
y=pandas.Series([0,0,1,1,1,0,0,1,0,1,1])
def f(x):
return reduce(lambda a,b:reduce((a+b)*b,x)
z=pandas.expanding_apply(y,f)
Я предполагаю, что я слишком часто перебираю весь список. Есть ли хороший Pythonic способ достижения того, что я хочу, только когда вы просматриваете данные? Я мог бы написать цикл сам, но интересно, есть ли лучший способ.
Спасибо!