#pandas
Вопрос:
Я хотел бы выполнить задачу, называемую прокаткой агрегата с запаздыванием… Начиная с этого фрейма данных
import pandas as pd
import numpy as np
df = pd.DataFrame({'B': [0, 1, 2, np.nan, 4]},
index = [pd.Timestamp('20130101 09:00:00'),
pd.Timestamp('20130101 09:00:02'),
pd.Timestamp('20130101 09:00:03'),
pd.Timestamp('20130101 09:00:05'),
pd.Timestamp('20130101 09:00:06')])
B
2013-01-01 09:00:00 0.0
2013-01-01 09:00:02 1.0
2013-01-01 09:00:03 2.0
2013-01-01 09:00:05 NaN
2013-01-01 09:00:06 4.0
Мне нужно было бы выполнить
df.rolling("3s excluding first 1s").max() # or more precisely df.rolling("(-3s,-1s]").max()
#closed on -1s, open on -3s
Мое реальное приложение включало чрезвычайно большой кадр данных, где временная метка также не имела постоянного интервала, и у меня также был идентификатор. Так что мое реальное приложение-это действительно групповой прокатный агрегат с запаздыванием. (подход сдвига/подход merge_as_of в моем случае не сработает…)
Ожидаемый результат таков
B
2013-01-01 09:00:00 NaN
2013-01-01 09:00:02 0.0
2013-01-01 09:00:03 1.0
2013-01-01 09:00:05 2.0
2013-01-01 09:00:06 NaN
Комментарии:
1. можете ли вы
rolling aggregation with lag
дать более четкое определение?2.
shift approach/merge_as_of approach won't work in my case.
почему нет? Если ваши текущие предоставленные данные не точно отражают трудности работы с вашим реальным набором данных, возможно, будет хорошей идеей обновить ваш пример, чтобы он был более репрезентативным.