按小时分组而不在Python中添加不存在的小时

时间:2019-01-25 11:46:16

标签: python python-3.x pandas pandas-groupby

我想将索引日期时间的df分组为小时。源数据间隔为5分钟,但仅从上午6点至下午6点,夜间无数据。

我的代码是这样的:

hourly= df.resample('60T').sum().sort_index().dropna(how='any')

但是,结果会产生额外的夜间时间,使每一天变得完整的24小时。它为夜间提供零值。我不要我只需要几个小时就可以尊重源数据。

请帮助。

1 个答案:

答案 0 :(得分:2)

您可以对已计算的序列使用groupby,在这种情况下,每隔1小时间隔铺地板:

# example dataframe
dates = ['2018-01-01 15:01:00', '2018-01-01 15:23:15', '2018-01-01 16:30:05']
df = pd.DataFrame({'date': pd.to_datetime(L), 'values': [1, 2, 3]})

res = df.groupby(df['date'].dt.floor('60min'))['values'].sum()

print(res)

date
2018-01-01 15:00:00    3
2018-01-01 16:00:00    3
Name: values, dtype: int64