我正在解决一个问题,我有一个由日期,价格和每日回报组成的数据框(今天的价格/yday价格 - 1)。
NAV Return
Date
01/01/2015 100.000000 NaN
01/02/2015 97.002676 -0.029973
01/03/2015 96.123553 -0.009063
01/04/2015 95.877838 -0.002556
01/05/2015 96.257080 0.003955
我的目标是在数据中创建另一列,即数据子集的标准偏差(5 天价值)。因此,前 5 个值为 null,但列的其余部分将包含该行和前 5 行的标准差。所以它看起来像这样:
NAV Return std
Date
01/01/2015 100.000000 NaN NaN
01/02/2015 97.002676 -0.029973 NaN
01/03/2015 96.123553 -0.009063 NaN
01/04/2015 95.877838 -0.002556 NaN
01/05/2015 96.257080 0.003955 NaN
... ... ... ...
12/26/2015 101.167791 -0.000612 0.008190
12/27/2015 102.924456 0.017364 0.007941
12/28/2015 100.216064 -0.026314 0.010082
12/29/2015 98.383266 -0.018288 0.014706
12/30/2015 96.853369 -0.015550 0.015137
我想出了一种方法,通过基于if/then语句创建一个列表,但它需要很长时间才能运行。我想知道是否有更快的方法来完成这项任务,理想情况下使用矢量化。这是我想出的代码:
data = []
for row in range(len(df)):
if row < 5:
data.append(None)
else:
data.append(np.std(df['Return'][row-5:row]))
df['std'] = data
慕村9548890
相关分类