是否有一种方法可以在数据帧中执行滚动标准偏差,其中从第0行开始以200行数据帧为单位,以15为增量递增到200?
df['SD1'] = df['ratio_div'].rolling(window =-15, min_periods= -15).std()
您不能做一个负向滚动窗口。我还能通过哪些其他方式实现这一目标?我尝试用15和15进行操作,并且SD的前15个是Nan。如果将ratio_dev的索引0移到索引14,则SD1索引0应该有一个值。
ratio_div在索引0处始终是最新的,应该显示其本身的std以及前一个14。这似乎不适用于我尝试的选项。有什么想法吗?
time close num ratio ratio_div SD1
0 4/29/2019 8:24 1.1159 386 0 0
1 4/29/2019 8:23 1.1159 620 -1 -0.000448029
2 4/29/2019 8:22 1.116 648 1 0.000448069
3 4/29/2019 8:21 1.1159 606 0 0
4 4/29/2019 8:20 1.1159 638 1 0.000448109
5 4/29/2019 8:19 1.1158 607 -2 -0.000896057
6 4/29/2019 8:18 1.116 679 1 0.000448069
7 4/29/2019 8:17 1.1159 676 1 0.000448109
8 4/29/2019 8:16 1.1158 680 -1 -0.000448069
9 4/29/2019 8:15 1.1159 694 1 0.000448109
10 4/29/2019 8:14 1.1158 776 1 0.000448149
11 4/29/2019 8:13 1.1157 937 -2 -0.000896138
12 4/29/2019 8:12 1.1159 628 0 0
13 4/29/2019 8:11 1.1159 613 0 0
14 4/29/2019 8:10 1.1159 655 -1 -0.000448029
15 4/29/2019 8:09 1.116 842 -1 -0.000447989
16 4/29/2019 8:08 1.1161 820 -3 -0.001343604
17 4/29/2019 8:07 1.1164 661 2 0.000895897
18 4/29/2019 8:06 1.1162 640 0 0
19 4/29/2019 8:05 1.1162 590 -1 -0.000447908
20 4/29/2019 8:04 1.1163 569 1 0.000447948
21 4/29/2019 8:03 1.1162 603 0 0
答案 0 :(得分:0)
这解决了我在这里试图做的事情。只需将其应用于每一行...。这就是我现在遇到的问题。
def eric_std(idxs):
x=idxs
y=idxs+14
result = (df.loc[x:y,['ratio_div']].std()).values[0]
return result