1

我有一个看起来像这样的时间序列数据:

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 条记录只需要平均。dataframe在 pandas或 graphlab中是否有一种方便的方法SFrame?如果有人可以分享相关资源,那就太好了!

我很感激任何帮助!

4

2 回答 2

1

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])

Pandas 系列大部分时间都支持 Numpy 功能。在您的情况下,而不是 from index 0, iterate from 0to 2in for 循环应该可以完成工作。

于 2017-01-25T22:12:07.427 回答
1

您可以使用agg由楼层划分创建的 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
于 2017-01-25T22:03:10.593 回答