python - 如何仅按小时聚合熊猫日期时间线系列
问题描述
我有一个包含日期对象和分数的熊猫时间表:
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 并按小时聚合?
解决方案
一种可能的解决方案是使用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
推荐阅读
- angular - Angular 通用 angular-highcharts 错误
- scala - 在 java 中修剪 Apache Spark 中的特殊字符
- javascript - 为什么我不能解析 XML?
- sql - 如何编码从第一个日期到最后一个日期的用户输入参数(SQL 查询管理器)
- flutter - 如何在 JSON Dart 中添加新数据?
- java - 检查字符串中的一组字母是否是变量的有效方法?
- javascript - 使用对象的两个属性减少单个对象数组
- python - 如何区分街道名称和地址?
- kubernetes - 如何从 kubernetes(裸机服务器)中的节点重新调度 pod?
- c++ - 我当前的代码在 MS Visual Studio 中运行不正常?