相关疑难解决方法(0)

计算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)
Run Code Online (Sandbox Code Playgroud)

我猜我在整个列表中循环太多次了.有没有一种很好的Pythonic方法可以实现我想要的,而只需要浏览一次数据?我自己可以写一个循环,但想知道是否有更好的方法.

谢谢!

python statistics pandas

20
推荐指数
2
解决办法
1万
查看次数

标签 统计

pandas ×1

python ×1

statistics ×1