如何汇总熊猫特定日期时间的数据?

时间:2019-03-14 18:41:13

标签: python pandas datetime dataframe data-analysis

我有一个数据框,其值超过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]

但是我如何才能在此之前和下一个范围内求和?

2 个答案:

答案 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