Yuriy Tigiev Asked:2022-02-03 02:08:18 +0000 UTC2022-02-03 02:08:18 +0000 UTC 2022-02-03 02:08:18 +0000 UTC DataFrame - 计算窗口内到最近的 Min/Max 元素的偏移量 772 如何计算窗口内从当前元素到 DataFrame 中最近的 Min/Max 元素的偏移量? import pandas as pd df = pd.DataFrame([1,20,3,40,5,60,12,11,12,4], columns=['close']) print(df) print(df.rolling(window=3).max()) 期望的结果 python 1 个回答 Voted Best Answer strawdog 2022-02-03T02:47:26Z2022-02-03T02:47:26Z 你可以这样做: df["offset"] = df.rolling(window=3).apply(pd.Series.idxmax) df["offset"] = df.index - df["offset"] 那么 df 将是: close offset 0 1 NaN 1 20 NaN 2 3 1.0 3 40 0.0 4 5 1.0 5 60 0.0 6 12 1.0 7 11 2.0 8 12 2.0 9 4 1.0 与idxmin. 顺便注意第 8 行的偏移值:它是 2,而不是 0,因为idxmax/idxmin正在寻找系列中的第一个最大值 / 最小值。 更新 如果您希望从窗口末尾搜索最大值/最小值,您可以这样做: def find_peak(window): res=pd.Series(window)[::-1].idxmax() return res df["offset"] = df.rolling(window=3).apply(find_peak) df["offset"] = df.index - df["offset"] 那么它将df是: close offset 0 1 NaN 1 20 NaN 2 3 1.0 3 40 0.0 4 5 1.0 5 60 0.0 6 12 1.0 7 11 2.0 8 12 0.0 9 4 1.0
你可以这样做:
那么 df 将是:
与
idxmin. 顺便注意第 8 行的偏移值:它是 2,而不是 0,因为idxmax/idxmin正在寻找系列中的第一个最大值 / 最小值。更新
如果您希望从窗口末尾搜索最大值/最小值,您可以这样做:
那么它将
df是: