Python,熊猫,反向扩展窗口

吉姆·巴斯奎特

让我们考虑以下系列:

s=pd.Series(data=[100, 110, 120, 150, 110, 90, 80, 70, 90, 95])

我遍历每个项目并执行以下操作:

for i in range(len(s)):
    m=max(s[i]-s[i:])

基本上将每个项目与随后的所有项目进行比较,并获取最大

我可以这样:

r=[]
for i in range(len(s)):
    m=max(s[i]-s[i:])
    r.append(m)

result=pd.Series(r)

但是我感觉这将是滚动窗口可以做的事情?我正在尝试使代码更简洁一些,并且刚刚开始阅读和探索滚动功能,但是我只能对此有所了解。这个想法似乎是一种反向扩展功能(即,随着数据下降,它需要越来越少的数据)?

如果有人对如何使用滚动/扩展窗口重新格式化代码有想法,请告诉我。

亚力山大

使用反转初始序列[::-1],取累计最小值,然后再次反转。从中减去所得序列s

>>> s.sub(s[::-1].cummin()[::-1])

0    30
1    40
2    50
3    80
4    40
5    20
6    10
7     0
8     0
9     0
dtype: int64

如果索引是单调递增的,则可以更明确:

s.sub(s.sort_index(ascending=False).cummin().sort_index())

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章