У меня есть кадр данных pandas с таким индексом времени, как этот
import pandas as pd
import numpy as np
idx = pd.date_range(start='2000',end='2001')
df = pd.DataFrame(np.random.normal(size=(len(idx),2)),index=idx)
, который выглядит следующим образом:
0 1
2000-01-01 0.565524 0.355548
2000-01-02 -0.234161 0.888384
Я хотел бы вычислить скользящее среднее, например
df_avg = df.rolling(60).mean()
, но исключая всегда записи, соответствующие (скажем, 10 дням до + - 2 дня).Другими словами, для каждой даты df_avg должен содержать среднее (экспоненциальное с ewm или flat) предыдущих 60 записей, но исключая записи от t-48 до t-52.Полагаю, мне нужно сделать что-то вроде маски, но я не знаю как.Я мог бы также попытаться вычислить два отдельных средних и получить результат как разность, но он выглядит грязным, и мне интересно, есть ли лучший способ, который обобщает другие нелинейные вычисления ...
Большое спасибо!