为了账号安全,请及时绑定邮箱和手机立即绑定

创建一个新的 pandas 列,作为另一列行的子集的结果

创建一个新的 pandas 列,作为另一列行的子集的结果

慕码人8056858 2022-09-27 09:44:23
我正在解决一个问题,我有一个由日期,价格和每日回报组成的数据框(今天的价格/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
查看完整描述

1 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

您可以使用滚动:

df['std'] = df['Return'].rolling(6).std()


查看完整回答
反对 回复 2022-09-27
  • 1 回答
  • 0 关注
  • 54 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信