首页 > 解决方案 > 如何根据熊猫中的时间戳以小时为单位聚合数据?

问题描述

我每天从 00:00:00 到 23:59:59 有一个完整的数据框,下面的表格只是示例,我不能在这里粘贴它,因为它太长了。

id        sm_log_time                    score 1       score 2  
0         2020-04-15 15:25:49            10            10   
1         2020-04-15 15:38:55            10            10   
2         2020-04-15 15:52:01            10            10   
3         2020-04-15 16:05:07            10            10   
4         2020-04-15 16:18:13            10            10 

我想要的数据框是这样的。分数 1 和分数 2 是基于一小时中的分钟数的总和

id        sm_log_time                    score 1       score 2  
0         2020-04-15 15:00:00            100            200   
1         2020-04-15 16:00:00            230            200  
2         2020-04-15 17:00:00            200            300  
3         2020-04-15 18:00:00            100            300  
4         2020-04-15 19:00:00            100            300

有人给我这个供参考:

times = pd.to_datetime(df.timestamp_col)
df.groupby([times.hour, times.minute]).value_col.sum()

标签: pythonpandas

解决方案


首先设置索引是必要的。然后使用resample时间序列索引的方法:

df.set_index('sm_log_time').resample('H').sum().reset_index()

结果:

          sm_log_time  id  score 1  score 2
0 2020-04-15 15:00:00   3       30       30
1 2020-04-15 16:00:00   7       20       20

请注意也id已汇总,如果没有必要,您可以删除它。结果数据帧的新行号现在在索引中。


推荐阅读