首页 > 解决方案 > Python数据框将分钟数据转换为30分钟/小时

问题描述

我正在尝试将以分钟为单位收集的数据转换为 30 分钟和 1 小时的间隔。数据框是:

dateTime            stepsDaily  
2019-11-11 11:58:00 0
2019-11-11 12:00:00 7
2019-11-11 12:01:00 27
2019-11-11 12:08:00 0
2019-11-11 12:13:00 0
... ...
2020-07-26 14:04:00 0
2020-07-26 14:07:00 0
2020-07-26 14:08:00 0
2020-07-26 14:09:00 0
2020-07-26 14:10:00 0

我努力了

df_steps.dateTime = pd.to_datetime(df_steps.dateTime)
df_steps.set_index("dateTime", drop=True, inplace=True)
df_steps.sort_index(inplace=True)
df_steps30 = df_steps.groupby([df_steps.index.hour]).sum()

但这会返回

dateTime stepsDaily
0   8352
1   9905
2   9154
3   5695
4   5626
5   24485
6   94481
7   155755
8   152925
9   152124
10  183447
11  153881
12  183888
13  235785
14  292723
15  314227
16  276683
17  232000
18  227208
19  209065
20  119630
21  56282
22  18181

这不是我想要的。相反,我希望它分别返回数据框中所有天的每小时步数总和。

比如:

2019-11-11 10:00:00 100
2019-11-11 11:00:00 75
2019-11-11 13:00:00 27
2019-11-11 14:00:00 677
2019-11-11 15:00:00 3

知道我做错了什么吗?

标签: pythondataframetime

解决方案


.resample()是关键。

我假设 dateTime 和 stepsDaily 是您数据框中的普通列。因此,您可以将 dateTime 设为索引,然后以 1 小时的步骤重新采样:

df.set_index('dateTime').resample('1h').sum()

推荐阅读