У меня есть датафрейм, который выглядит следующим образом:
| symbol | date | close
----|--------|------------|----------
0 | APX | 5/31/2017 | 4.04
1 | APX | 6/30/2017 | 5.4
2 | APX | 7/31/2017 | 4.15
3 | APX | 8/31/2017 | 9.95
4 | APX | 9/30/2017 | 10.3
5 | APX | 10/31/2017 | 5.58
6 | APX | 11/30/2017 | 8.47
7 | APX | 12/31/2017 | 15.66
8 | APX | 1/31/2018 | 10.55
9 | APX | 2/28/2018 | 9.8
10 | APX | 3/31/2018 | 7.43
11 | APX | 4/30/2018 | 8.93
12 | APX | 5/31/2018 | 7.61
13 | APX | 6/30/2018 | 7.79
14 | AURA | 1/31/2018 | 0.221382
15 | AURA | 2/28/2018 | 0.222236
16 | AURA | 3/31/2018 | 0.075488
17 | AURA | 4/30/2018 | 0.180699
18 | AURA | 5/31/2018 | 0.220009
19 | AURA | 6/30/2018 | 0.199029
20 | BASH | 11/30/2016 | 0.000447
21 | BASH | 12/31/2016 | 0.000376
22 | BASH | 1/31/2017 | 0.000452
23 | BASH | 2/28/2017 | 0.000414
24 | BASH | 3/31/2017 | 0.00045
25 | BASH | 4/30/2017 | 0.000754
26 | BASH | 5/31/2017 | 0.009115
27 | BASH | 6/30/2017 | 0.03419
28 | BASH | 7/31/2017 | 0.014037
29 | BASH | 8/31/2017 | 0.009117
30 | BASH | 9/30/2017 | 0.002333
31 | BASH | 10/31/2017 | 0.00258
32 | BASH | 11/30/2017 | 0.003415
33 | BASH | 12/31/2017 | 0.003756
34 | BASH | 1/31/2018 | 0.005454
35 | BASH | 2/28/2018 | 0.006186
36 | BASH | 3/31/2018 | 0.004155
37 | BASH | 4/30/2018 | 0.005078
38 | BASH | 5/31/2018 | 0.003696
39 | BASH | 6/30/2018 | 0.003442
Я хотел бы рассчитать 6-месячную конечную дисперсию для каждого символа и добавить ее в качестве нового столбца в фрейм данных. Дисперсия должна быть рассчитана на основе значения в столбце close
.
Так, например, для APX существует 14 наблюдений, поэтому первая дисперсия должна быть рассчитана на основе значений 4.04, 5.4, 4.15, 9.95, 10.3 и 5.58.
Следующая дисперсия должна быть рассчитана на основе 5,4, 4,15, 9,95, 10,3, 5,58 и 8,47 и т. Д.
Я предполагаю, что мне нужно использовать функцию df.var
для вычисления дисперсии, но как мне сказать, рассчитать это по скользящей 6-месячной основе для каждого символа?