首页 > 解决方案 > 如何仅按小时聚合熊猫日期时间线系列

问题描述

我有一个包含日期对象和分数的熊猫时间表:

          datetime   score
2018-11-23 08:33:02      4
2018-11-24 09:43:30      2
2018-11-25 08:21:34      5
2018-11-26 19:33:01      4
2018-11-23 08:50:40      1
2018-11-23 09:03:10      3

我想在不考虑日期的情况下按小时汇总分数,所需的结果是:

08:00:00        10
09:00:00        5
19:00:00        4

所以基本上我必须删除日期-月-年,然后按小时分组,

我试过这个命令

monthagg = df['score'].resample('H').sum().to_frame()

哪个有效,但考虑到日期-月份-年份,如何删除 DD-MM-YYYY 并按小时聚合?

标签: pythonpandasdatedatetimetimeline

解决方案


一种可能的解决方案是使用DatetimeIndex.floor设置分钟和秒0,然后通过 转换DatetimeIndex为字符串DatetimeIndex.strftime,然后聚合sum

a = df['score'].groupby(df.index.floor('H').strftime('%H:%M:%S')).sum()
#if column datetime
#a = df['score'].groupby(df['datetime'].dt.floor('H').dt.strftime('%H:%M:%S')).sum()
print (a)
08:00:00    10
09:00:00     5
19:00:00     4
Name: score, dtype: int64

或使用DatetimeIndex.hour和聚合sum

a = df.groupby(df.index.hour)['score'].sum()
#if column datetime
#a = df.groupby(df['datetime'].dt.hour)['score'].sum()
print (a)
datetime
8     10
9      5
19     4
Name: score, dtype: int64

推荐阅读