Skip to main content
 首页 » 编程设计

Python、Pandas、倒置展开窗口

2025年05月04日21langtianya

让我们考虑以下系列:

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) 

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

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

请您参考如下方法:

您可以在 s 上使用 numpy.minimum.accumulate 反转,然后从 s 中减去它:

import numpy as np 
s - np.minimum.accumulate(s[::-1])[::-1] 
 
#0    30 
#1    40 
#2    50 
#3    80 
#4    40 
#5    20 
#6    10 
#7     0 
#8     0 
#9     0 
#dtype: int64