Python 如何获取timeseries数据中每三天的平均值

Python 如何获取timeseries数据中每三天的平均值,python,pandas,dataframe,graphlab,sframe,Python,Pandas,Dataframe,Graphlab,Sframe,我的时间序列数据如下所示: datetime | value 2016-01-01 | 1 2016-01-02 | 14 2016-01-03 | 3 2016-01-04 | 15 2016-01-05 | 5 2016-01-06 | 4 2016-01-07 | 7 2016-01-08 | 15 datetime | value 2016-01-03 | 6 2016-01-06 | 8 2016-01-08 | 11 我想得到的是每三天(以及每一

我的时间序列数据如下所示:

datetime    | value
2016-01-01  | 1
2016-01-02  | 14
2016-01-03  | 3
2016-01-04  | 15
2016-01-05  | 5
2016-01-06  | 4
2016-01-07  | 7
2016-01-08  | 15
datetime    | value
2016-01-03  | 6
2016-01-06  | 8
2016-01-08  | 11
我想得到的是每三天(以及每一周)的平均值,并将最后一天作为如下索引:

datetime    | value
2016-01-01  | 1
2016-01-02  | 14
2016-01-03  | 3
2016-01-04  | 15
2016-01-05  | 5
2016-01-06  | 4
2016-01-07  | 7
2016-01-08  | 15
datetime    | value
2016-01-03  | 6
2016-01-06  | 8
2016-01-08  | 11
您可能会注意到,剩下的2条记录只需求平均值。在pandas
dataframe
或graphlab
SFrame
中是否有一种简便的方法来实现这一点?如果有人能分享相关资源,那就太好了

谢谢你的帮助

您可以使用楼层分区创建的numpy阵列:

print (np.arange(len(df.index)) // 3)
[0 0 0 1 1 1 2 2]

df = df.groupby(np.arange(len(df.index)) // 3).agg({'datetime': 'last', 'value': 'mean'})
print (df)
     datetime  value
0  2016-01-03      6
1  2016-01-06      8
2  2016-01-08     11

Numpy
阵列支持偶数空格选择:

>>> import numpy as np
>>> l = np.arange(10)
>>> l
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> l[0::3]
array([0, 3, 6, 9])
熊猫系列大多数时候都支持Numpy功能。在您的情况下,应该在for循环中从
0
迭代到
2
,而不是从索引
0