我正在解决一个问题,我有一个由日期,价格和每日回报组成的数据框(今天的价格/yday价格 - 1)。 NAV ReturnDate 01/01/2015 100.000000 NaN01/02/2015 97.002676 -0.02997301/03/2015 96.123553 -0.00906301/04/2015 95.877838 -0.00255601/05/2015 96.257080 0.003955我的目标是在数据中创建另一列,即数据子集的标准偏差(5 天价值)。因此,前 5 个值为 null,但列的其余部分将包含该行和前 5 行的标准差。所以它看起来像这样: NAV Return stdDate 01/01/2015 100.000000 NaN NaN01/02/2015 97.002676 -0.029973 NaN01/03/2015 96.123553 -0.009063 NaN01/04/2015 95.877838 -0.002556 NaN01/05/2015 96.257080 0.003955 NaN... ... ... ...12/26/2015 101.167791 -0.000612 0.00819012/27/2015 102.924456 0.017364 0.00794112/28/2015 100.216064 -0.026314 0.01008212/29/2015 98.383266 -0.018288 0.01470612/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
添加回答
举报
0/150
提交
取消