首页 > 解决方案 > Pandas:如何在滚动窗口中找到高点后的低点

问题描述

对于一系列数字,我试图在滚动窗口内找到高点之后的低点。我能够计算窗口内的高点,但不能计算同一窗口内的低点。我正在使用 Pandas 并试图获取高索引并将其用作某种类型的参考,但我无法让它工作。

这是一些设置问题的代码:

 dates = pd.date_range("20130101", periods=15)
 temps = {'Temperature' :[16, 3, 26, 56, 2, 92, 54, 98, 73, 68, 80, 18, 75, 24, 12]}
 df = pd.DataFrame(temps, index=dates, columns = ['Temperature'])
 df['RollMax'] = df['Temperature'].rolling(5).max()
 # df['Low_After_High'] = ### Lowest value after high has been reached within the window

输出应该是这样的:

在此处输入图像描述

标签: pythonpandasmaxminrolling-computation

解决方案


让我们apply一起做idxmax

df['Low_After_High'] = df.Temperature.rolling(5).apply(lambda x : min(x[pd.Series(x).idxmax():]))
2013-01-01     NaN
2013-01-02     NaN
2013-01-03     NaN
2013-01-04     NaN
2013-01-05     2.0
2013-01-06    92.0
2013-01-07    54.0
2013-01-08    98.0
2013-01-09    73.0
2013-01-10    68.0
2013-01-11    68.0
2013-01-12    18.0
2013-01-13    18.0
2013-01-14    18.0
2013-01-15    12.0
Freq: D, Name: Temperature, dtype: float64

推荐阅读