Я читал документацию по функции roll () и, похоже, не могу найти способ одновременного включения как прямого, так и обратного окон.То, что я хочу сделать, - это вычислить среднее абсолютное отклонение (или даже стандартное отклонение) форвардных 10 и последних 10 событий для анализа выбросов.
Я смог вычислить среднее значение для форварда / последних 10 хакерским способом, выполнив
df = pd.DataFrame({ 'date': pd.date_range(start='1/1/2017', end='12/31/2017'),
'value': np.random.rand(365)})
first_10 = df.rolling(window=10, win_type='triang')['value'].mean().shift().reset_index()
last_10 = df[::-1].rolling(window=10, win_type='triang')['value'].mean().shift().reset_index()
, а затем
pd.merge(first_10, last_10, on = ['level_1']).set_index(['level_1']).mean(axis=1)
Но потому что вы не можете простов среднем два MAD вместе, чтобы получить MAD для этого окна, я не могу этого сделать.У кого-нибудь есть более надежный способ использовать функцию прокрутки для таких вычислений?Чувствуется, что должно быть далеко, используя какую-то функцию сдвига.
Оцените помощь по этому вопросу.