Использование pd.повторная выборка с помощью PeriodIndex

#python #pandas #period #pandas-resample

#питон #панды #период #панды-повторный пример

Вопрос:

У меня есть временной ряд с разрешением 5 минут. Записи представляют количество энергии, использованной за предыдущие 5 минут. Т. е. запись для 00:25 показывает потребление энергии от 00:20:01-00:25:00.

 import pandas as pd  idx = pd.date_range(start='2021-11-30 00:00', end='2021-11-30 1:00', freq='5T') ser = pd.Series(index=idx, data=range(len(idx)))  

Мне нужно пересчитать данные с интервалом в 15 минут. Я могу сделать это с помощью

 ser.resample('15T', closed='right', label='right').sum()  

что дает:

 2021-11-30 00:00:00 0 2021-11-30 00:15:00 6 2021-11-30 00:30:00 15 2021-11-30 00:45:00 24 2021-11-30 01:00:00 33 Freq: 15T, dtype: int64  

Именно то, чего я хочу. Размышляя над своим кодом, я подумал, что мой индекс должен состоять не из временных меток, а из периодов. Так я и сделал:

 ser_period = ser.copy() ser_period.index = ser_period.index.to_period(freq='5T')  

Насколько я вижу, ничего существенного не изменилось. Но если я это сделаю

 ser_period.resample('15T', closed='right', label='right').sum()  

Я получаю

 2021-11-29 23:45 3 2021-11-30 00:00 12 2021-11-30 00:15 21 2021-11-30 00:30 30 2021-11-30 00:45 12 2021-11-30 01:00 0 Freq: 15T, dtype: int64  

Я повозился с аргументами, но исправить это не удалось. И я не понимаю, почему это происходит. Конечно, я могу придерживаться индекса даты и времени, но я все равно в замешательстве. Почему повторная выборка приводит к другому результату? И был ли я неправ в преобразовании индекса? Разве промежуток времени в 5 минут не является разумным периодом?»