Это действительно нужно отсортировать.Это становится очевидным, если вы задаете смещение в качестве размера окна (для datetime) вместо целого числа.
Пример данных
import pandas as pd
n = 6
df = pd.DataFrame({'date': pd.date_range('2018-01-01', '2018-01-03', periods=n),
'val': range(n)})
df = df.set_index('date')
При заказе:
df.rolling(2, on='date').sum()
date val
0 2018-01-01 00:00:00 NaN
1 2018-01-01 09:36:00 1.0
2 2018-01-01 19:12:00 3.0
3 2018-01-02 04:48:00 5.0
4 2018-01-02 14:24:00 7.0
5 2018-01-03 00:00:00 9.0
В неупорядоченном виде не сортируется и не соблюдает порядок даты.
df.sample(frac=1, random_state=123).rolling(2, on='date').sum()
date val
1 2018-01-01 09:36:00 NaN
3 2018-01-02 04:48:00 4.0
4 2018-01-02 14:24:00 7.0
0 2018-01-01 00:00:00 4.0
2 2018-01-01 19:12:00 2.0
5 2018-01-03 00:00:00 7.0
Теперь, если вам нужна 2-дневная скользящая сумма, вы должны сделать что-то вроде:
df.rolling(window='2D', on='date').sum()
date val
0 2018-01-01 00:00:00 0.0
1 2018-01-01 09:36:00 1.0
2 2018-01-01 19:12:00 3.0
3 2018-01-02 04:48:00 6.0
4 2018-01-02 14:24:00 10.0
5 2018-01-03 00:00:00 15.0
Но если не отсортировать, вы получите ошибку, указывающую, что вы должны были отсортироватьсначала:
df.sample(frac=1, random_state=123).rolling(window='2D', on='date').sum()
ValueError: date must be monotonic