Я считаю, что вам нужно использовать панд resample
, вот пример того, как он используется для достижения желаемого результата.Тем не менее, имейте в виду, что, поскольку это операция передискретизации во время преобразования частоты, вы должны передать функцию того, как будут вести себя другие столбцы (суммирование всех значений, соответствующих новому таймфрейму, вычисление среднего значения, вычисление разницы и т. Д ...) в противном случае вам вернут DatetimeIndexResample
.Вот пример:
import pandas as pd
index = pd.date_range('1/1/2000', periods=9, freq='40T')
series = pd.Series(range(9),index=index)
print(series)
Вывод:
2000-01-01 00:00:00 0
2000-01-01 00:40:00 1
2000-01-01 01:20:00 2
2000-01-01 02:00:00 3
2000-01-01 02:40:00 4
2000-01-01 03:20:00 5
2000-01-01 04:00:00 6
2000-01-01 04:40:00 7
2000-01-01 05:20:00 8
Применение resample
ежечасно без прохождения функции агрегирования:
print(series.resample('H'))
Выход:
DatetimeIndexResampler [freq=<Hour>, axis=0, closed=left, label=left, convention=start, base=0]
После прохождения .sum()
:
print(series.resample('H').sum())
Выход:
2000-01-01 00:00:00 1
2000-01-01 01:00:00 2
2000-01-01 02:00:00 7
2000-01-01 03:00:00 5
2000-01-01 04:00:00 13
2000-01-01 05:00:00 8
Freq: H, dtype: int64