Мне нужно рассчитать скользящее среднее, используя pandas
.
ser = pd.Series(np.random.randn(100),
index=pd.date_range('1/1/2000', periods=100, freq='1min'))
ser.rolling(window=20).mean().tail(5)
[Out]
2000-01-01 01:35:00 0.390383
2000-01-01 01:36:00 0.279308
2000-01-01 01:37:00 0.173532
2000-01-01 01:38:00 0.194097
2000-01-01 01:39:00 0.194743
Freq: T, dtype: float64
Но после добавления новой строки, как это,
new_row = pd.Series([1.0], index=[pd.to_datetime("2000-01-01 01:40:00")])
ser = ser.append(new_row)
Я должен пересчитать все движущиеся данные, как это,
ser.rolling(window=20).mean().tail(5)
[Out]
2000-01-01 01:36:00 0.279308
2000-01-01 01:37:00 0.173532
2000-01-01 01:38:00 0.194097
2000-01-01 01:39:00 0.194743
2000-01-01 01:40:00 0.201918
dtype: float64
Я думаю, мне просто нужно вычислить последние данные 2000-01-01 01:40:00 0.201918
, но я не могу найти pandas api, который вычисляет только значение последней добавленной строки. Панды rolling().mean()
всегда рассчитывают все данные серии
Это простой пример, но в моем реальном проекте диапазон составляет более 1 000 000 серий, и каждый скользящий расчет занимает много времени
Есть ли способ решить эту проблему в пандах?