对于pandas.DataFrame.rolling
窗口,我可以设置window
大小来描述固定宽度(固定元素数量或固定offset)。
如何获得始终从第一个条目开始并向前滚动到每个条目的窗口?例如,在DataFrame中有一系列x
,我希望每行获得以下窗口:
x intended_window
0 10 [10]
1 11 [10,11]
2 12 [10,11,12]
3 13 [10,11,12,13]
4 14 [10,11,12,13,14]
答案 0 :(得分:3)
您不需要中间结果 - 您可以使用pandas的扩展平均值直接计算。 Pandas提供了一个称为expanding
窗口的功能,它允许您在扩展值窗口时执行计算。对于您的情况,您需要expanding.mean
:
df.x.expanding().mean()
0 10.0
1 10.5
2 11.0
3 11.5
4 12.0
Name: x, dtype: float64
请注意,它与您当前使用的内容相同:
df['intended_window'].apply(np.mean)
0 10.0
1 10.5
2 11.0
3 11.5
4 12.0
Name: intended_window, dtype: float64
但前者的表现要高得多。