Contando valor positivo consecutivo en la matriz de Python

Estoy tratando de contar los días consecutivos en los datos de rendimiento de renta variable, por lo que si un día positivo es 1 y uno negativo es 0, una listay=[0,0,1,1,1,0,0,1,0,1,1] debería volverz=[0,0,1,2,3,0,0,1,0,1,2].

He llegado a una solución que es ordenada en términos de número de líneas de código, pero esmuy lento:

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)

Supongo que estoy recorriendo la lista completa muchas veces. ¿Hay una buena forma pitónica de lograr lo que quiero mientras solo reviso los datos una vez? Yo mismo podría escribir un bucle pero preguntándome si hay una mejor manera.

¡Gracias!

Respuestas a la pregunta(4)

Su respuesta a la pregunta