我有一个带结构的日期框架
Date value type
2015-01-01 1 2
2015-01-02 2 3
2015-01-03 1 2
2015-01-03 4 3
2015-01-05 7 5
日期框的索引超过“日期”列。 我需要为每个'类型'获得n个最新记录的平均值。或者每种类型的滚动均值(对我而言,它看起来更复杂,但可能很容易实现)。 如何以最有效的方式进行查询?每个'类型'的循环非常慢。
如果能加快查询速度,我可以创建临时日期结构。
答案 0 :(得分:0)
假设您的数据框按date
排序,您可以编写一个聚合函数来执行此操作:
In [22]:
#simply made your dataframe larger to have more than 2 items per group
print df
Date value type
0 2015-01-01 1 2
1 2015-01-02 2 3
2 2015-01-03 1 2
3 2015-01-03 4 3
4 2015-01-05 7 5
5 2015-01-06 1 2
6 2015-01-07 2 3
7 2015-01-08 1 2
8 2015-01-09 4 3
9 2015-01-10 7 5
In [23]:
df.groupby(['type']).value.agg(lambda x: np.mean(x[-2:])) #2 newest observations
Out[23]:
type
2 1
3 3
5 7
Name: value, dtype: int64