让我们考虑以下系列:
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
上使用numpy.minimum.accumulate
反转,然后从s
中减去它:或者我们可以使用
rolling
和min
相关问题 更多 >
编程相关推荐