ilocs_window = pd.rolling_apply(df, window=5, func=lambda x: x.argmin(),
    min_periods=1)
ilocs = ilocs_window['value'] + ([0, 0, 0, 0] + list(range(len(ilocs_window) - 4)))
ilocs
df.index.take(ilocs)
df['rolling_min_date'] = df.index.take(ilocs)
df
Последнее максимальное/минимальное значение