计算Python数组中的连续正值
我正在尝试计算股票收益数据中连续上升的天数-
因此,如果正数日为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方式可以实现我想要的,而只需要遍历一次数据?我可以自己编写一个循环,但想知道是否有更好的方法。
谢谢!