Pandas: 如何在滚动中找到高点后的低点 window
Pandas: How to find the low after a high within a rolling window
对于一系列数字,我试图在滚动 window 中找到高点之后的低点。我能够计算出 window 内的高点,但无法计算同一 window 内的低点。我正在使用 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
输出应该是这样的:
让我们用 idxmax
做 apply
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
对于一系列数字,我试图在滚动 window 中找到高点之后的低点。我能够计算出 window 内的高点,但无法计算同一 window 内的低点。我正在使用 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
输出应该是这样的:
让我们用 idxmax
apply
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