Если вы просто хотите отфильтровать добавленное время, вы можете сделать то, что cs95 сказал в комментариях, или:
out = data.groupby(pd.Grouper(freq='1h')).sum(min_count=1).dropna()
min_count
делает NaN выводом, если нет данных для bin, который затем можно удалить с помощью dropna()
.
Если вместо этого вы не хотите, чтобы эти дополнительные ячейки вычислялись в первую очередь , это может быть более сложным (обратите внимание, что по этому поводу есть похожий открытый пост , также с сегодняшнего дня ). Но, учитывая почасовую частоту бинов, вы можете сделать что-то вроде этого:
out1 = data.groupby(data.index.hour).sum()
И если данные охватывают несколько дней, вы можете сделать:
out2 = data.groupby([data.index.date, data.index.hour]).sum()
Но обратите внимание, что данные index сейчас не в формате datetime
, поэтому вам может потребоваться обратное преобразование.
Вот пример данных, которые я использовал:
import pandas as pd
dr = pd.date_range('1-1-2020 7:00', periods=6, freq='30min')
data = pd.DataFrame([10,20,30,40,50,60], index=dr, columns=['Values'])
data = data[data.index.hour != 8]