Есть похожие вопросы, но мои datetime
объекты очень пространственные и не упорядочены, например, они являются случайными временными метками во времени.По сути, мне нужно использовать rolling()
, но прокрутить его по 2-му индексу, помня группу (1-й индекс).
Существует очень похожая проблема GitHub, в которую вы также можете внести свой вклад: https://github.com/pandas-dev/pandas/issues/15584
Код для воспроизведения:
import pandas as pd
data = {
'id': ['A','A','A','B'],
'time': pd.to_datetime(['2018-01-04 08:13:51.181','2018-01-04 08:13:55.181','2018-01-04 09:13:51.181', '2018-01-04 08:13:51.183']),
'colA': [4,3,2,1],
'30min_rolling_output': [4,7,2,1],
'1day_rolling_output': [4,7,9,1]
}
test_df = pd.DataFrame(data=data).set_index(['id', 'time'])
Требуемый вывод принимает аргументы 30m
и 1h
.
Визуализация:
colA 30min_rolling_output 1day_rolling_output
id date
A 2018-01-04 08:13:51.181 4 4 4
2018-01-04 08:13:55.181 3 7 7
2018-01-04 09:13:51.181 2 2 9
B 2018-01-04 08:13:51.183 1 1 1