使用所有前一行计数的窗口的Pandas滚动标准差

3

我想计算每日收益的滚动标准差,使用当前行之前的所有记录。如何设置窗口以使用滚动行数进行计算?例如:在04-04。 我想使用所有行进行计算,在04-01上,我想使用日期小于04-01的所有行。

Date        Daily       Std
4/4/2016    -0.003087335    ?
4/1/2016    0.006480923 ?
3/31/2016   -0.001553158    ?
3/30/2016   0.004351748 ?
3/29/2016   0.009234222 ?

1
你可能需要使用 expanding() 而不是 rolling(),并且需要排序以按日期升序排列。 - JohnE
1个回答

6

使用pandas 0.18版本,使用Rolling对象。这是一个2天的滚动标准差:

df.rolling(2).std()

在之前的版本中,调用方式为:

df.rolling_std(2)

如果目标是从DataFrame的开头应用函数到当前行,那么要使用的对象是Expanding

df.expanding().std()

1
我希望滚动的天数根据之前记录的数量是动态的。因此,在4-4应该有5行,在4-1应该使用4行,在3-31应该使用3行。 - Poly-AAAA
1
还需要进行排序,因为日期与OP所要求的相反。我认为扩展只能朝一个方向进行。 - JohnE
巴斯光年来拯救了,没想到有这么简单的内置功能,谢谢。 - Poly-AAAA

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接