我有一个数据框,其值超过1mil。任务是在每5分钟范围内将这些值加总。 换句话说,从0到前5分钟,然后是10分钟,然后是15,依此类推。但是超过30-33天。 这是我的数据:
Size
DateTime
2018-10-19 04:14:01.015000+00:00 2
2018-10-19 04:14:01.546000+00:00 1
2018-10-19 04:15:01.290000+00:00 1
2018-10-19 04:15:01.291000+00:00 10
2018-10-19 04:15:01.821000+00:00 1
2018-10-19 04:15:01.821000+00:00 1
2018-10-19 04:15:02.352000+00:00 1
2018-10-19 04:15:02.352000+00:00 1
2018-10-19 04:15:02.883000+00:00 1
2018-10-19 04:15:02.884000+00:00 1
2018-10-19 04:15:03.413000+00:00 1
2018-10-19 04:15:03.414000+00:00 1
2018-10-19 04:15:03.943000+00:00 1
2018-10-19 04:15:03.943000+00:00 1
2018-10-19 04:15:04.474000+00:00 1
2018-10-19 04:15:04.474000+00:00 1
2018-10-19 04:15:05.003000+00:00 1
2018-10-19 04:15:05.003000+00:00 1
2018-10-19 04:15:05.334000+00:00 1
2018-10-19 04:15:05.336000+00:00 1
...
2018-11-26 19:59:33.928000+00:00 1
2018-11-26 19:59:37.221000+00:00 1
2018-11-26 19:59:41.808000+00:00 1
2018-11-26 19:59:42.338000+00:00 1
2018-11-26 19:59:45.520000+00:00 1
2018-11-26 19:59:52.059000+00:00 1
2018-11-26 19:59:52.589000+00:00 1
2018-11-26 19:59:54.714000+00:00 1
2018-11-26 19:59:55.244000+00:00 1
2018-11-26 19:59:56.297000+00:00 1
2018-11-26 19:59:57.888000+00:00 1
2018-11-26 19:59:59.008000+00:00 1
2018-11-26 20:00:00.071000+00:00 1
2018-11-26 20:51:04.606000+00:00 1
2018-11-26 20:51:57.307000+00:00 1
如您所见,其中有很多行。我对如何执行操作有一些想法,但我遇到了麻烦。 好吧,数据范围可以设置为:
data[data.index.minute % 5 == 0]
但是我如何才能在此之前和下一个范围内求和?
答案 0 :(得分:1)
使用resample
:
data.resample('5min')['Size'].sum()
答案 1 :(得分:1)
在此处将pd.Grouper()
与freq=5min
注意,我只使用了示例数据的顶行,位于..
df_sum = df.groupby(pd.Grouper(key='DateTime', freq='5min', axis=1)).Size.sum().reset_index()
print(df_sum)
DateTime Size
0 2018-10-19 04:10:00 3
1 2018-10-19 04:15:00 27