首页 > 解决方案 > 在日期时间重新采样并计算平均值

问题描述

我一直面临一个问题,其中我有一组数据,然后,我想计算 10 分钟内的平均速度。所以假设我有以下数据:

            Timestamp      Category  ...      Status           Speed
0     2013-08-14 22:15:00         1  ...          1               10
1     2013-08-14 22:15:01         1  ...          1               10
2     2013-08-14 22:15:02         1  ...          0               10.1
3     2013-08-14 22:15:03         1  ...          1               10.1
4     2013-08-14 22:15:04         1  ...          1               12
5     2013-08-14 22:15:05         1  ...          0               12
6     2013-08-14 22:15:06         1  ...          1               13
7     2013-08-14 22:15:07         1  ...          0               12
8     2013-08-14 22:15:08         1  ...          1               11.2

35999 2013-08-23 23:35:00         0  ...          1               14.3

就我而言,我可以使用 pandas resample 轻松计算 10 分钟内的平均值,如下所示:

 df_mean = pd.DataFrame(df.resample('10Min', on='Timestamp')['speed'].mean())

这里真正的问题是,我希望从 22:15:00 开始获得平均值,但是,当我打开 df_mean 时,我得到的结果是这样的:

2017-07-23 22:10:00    13.835333    
2017-07-23 22:20:00    12.182766   
2017-07-23 22:30:00    11.426791   
2017-07-23 22:40:00    11.776899    
2017-07-23 22:50:00    12.027970   
2017-07-23 23:00:00    13.651600    
2017-07-23 23:10:00    14.031400    
2017-07-23 23:20:00    12.182766    
2017-07-23 23:30:00    11.334857    

实际上,我会从 22:15:00 开始一直到 23:35:00,所以我想要达到的结果是这样的:

2017-07-23 22:15:00    13.835333    
2017-07-23 22:25:00    12.182766   
2017-07-23 22:35:00    11.426791   
2017-07-23 22:45:00    11.776899    
2017-07-23 22:55:00    12.027970   
2017-07-23 23:05:00    13.651600    
2017-07-23 23:15:00    14.031400    
2017-07-23 23:25:00    12.182766    
2017-07-23 23:35:00    11.334857   

标签: pythonpandasdatetime

解决方案


下面是你所追求的吗?

df_mean = pd.DataFrame(df.resample('10Min', on='Timestamp', loffset='5min')['speed'].mean())

文档

loffset : 时间增量

调整重采样时间标签


推荐阅读