如何解决如何使用Pandas Grouper每小时获取值的总和
我有下表:
Hora_Retiro count_uses
0 00:00:18 1
1 00:00:34 1
2 00:02:27 1
3 00:03:13 1
4 00:06:45 1
... ... ...
748700 23:58:47 1
748701 23:58:49 1
748702 23:59:11 1
748703 23:59:47 1
748704 23:59:56 1
我想将每小时内的所有值分组,这样我就可以看到每小时的使用总数(00:00:00-23:00:00)
我有以下代码:
hora_pico_aug= hora_pico.groupby(pd.Grouper(key="Hora_Retiro",freq='H')).count()
Hora_Retiro列的类型为timedelta64 [ns] 给出以下输出:
count_uses
Hora_Retiro
00:00:02 2566
01:00:02 602
02:00:02 295
03:00:02 5
04:00:02 10
05:00:02 4002
06:00:02 16075
07:00:02 39410
08:00:02 76272
09:00:02 56721
10:00:02 36036
11:00:02 32011
12:00:02 33725
13:00:02 41032
14:00:02 50747
15:00:02 50338
16:00:02 42347
17:00:02 54674
18:00:02 76056
19:00:02 57958
20:00:02 34286
21:00:02 22509
22:00:02 13894
23:00:02 7134
但是,索引列从00:00:02开始,我希望它从00:00:00开始,然后从一小时间隔开始。像这样:
count_uses
Hora_Retiro
00:00:00 2565
01:00:00 603
02:00:00 295
03:00:00 5
04:00:00 10
05:00:00 4002
06:00:00 16075
07:00:00 39410
08:00:00 76272
09:00:00 56721
10:00:00 36036
11:00:00 32011
12:00:00 33725
13:00:00 41032
14:00:00 50747
15:00:00 50338
16:00:00 42347
17:00:00 54674
18:00:00 76056
19:00:00 57958
20:00:00 34286
21:00:00 22509
22:00:00 13894
23:00:00 7134
我如何使其从00:00:00开始?
感谢您的帮助!
解决方法
您可以从hour
列中创建一个Hora_Retiro
列。
df['hour'] = df['Hora_Retiro'].dt.hour
然后在groupby
的基础上hour
gpby_df = df.groupby('hour')['count_uses'].sum().reset_index()
gpby_df['hour'] = pd.to_datetime(gpby_df['hour'],format='%H').dt.time
gpby_df.columns = ['Hora_Retiro','sum_count_uses']
gpby_df
给予
Hora_Retiro sum_count_uses
0 00:00:00 14
1 09:00:00 1
2 10:00:00 2
3 20:00:00 2
,
我假设您的DataFrame中的 Hora_Retiro 列属于 Timedelta 类型。不是 datetime ,因为在这种情况下 日期部分也会被打印。
实际上,您的代码创建了以分钟/秒为单位的组 取自第一行。
按“完整时间”分组:
- 将此列中的每个元素四舍五入为 hour ,
- 然后分组(仅按此取整的值)。
执行此操作的代码是:
gl_FragColor
不过,我建议您下定决心,您要数什么: count_uses 列中的行或值。 在第二种情况下,将 count 函数替换为 sum 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。