您好我有以下数据,我正在尝试使用以下公式生成EXMA系列:
我的数据如下:
Idx outperf alpha exma
0 NaN NaN NaN
1 NaN 0.999992 NaN
2 NaN 0.999962 NaN
3 NaN 0.999962 NaN
4 NaN 0.999924 NaN
5 NaN 0.999813 NaN
6 NaN 0.999991 NaN
7 NaN 0.999995 NaN
8 NaN 0.999929 NaN
9 NaN 0.999985 NaN
10 NaN 0.999994 NaN
11 NaN 0.999975 NaN
12 0.000000 0.999940 0
13 0.026362 0.999837 NaN
14 0.018579 0.999989 NaN
15 0.026362 0.999951 NaN
16 0.036501 0.999854 NaN
17 0.028718 0.999987 NaN
18 0.022635 0.999979 NaN
19 0.018579 0.999986 NaN
20 0.026362 0.999983 NaN
我的代码如下:
df["exma"] = np.NaN # To initialise the column
df["exma"][initialindex] = df.outperf[initialindex] #To provide a starting value
df["exma"] = (df.alpha * df.exma.shift(1)) + ((1 - df.alpha) * df.outperf) #Formula
但是当我执行命令时,我得到了:
Idx outperf alpha exma
0 NaN NaN NaN
1 NaN 0.999992 NaN
2 NaN 0.999962 NaN
3 NaN 0.999962 NaN
4 NaN 0.999924 NaN
5 NaN 0.999813 NaN
6 NaN 0.999991 NaN
7 NaN 0.999995 NaN
8 NaN 0.999929 NaN
9 NaN 0.999985 NaN
10 NaN 0.999994 NaN
11 NaN 0.999975 NaN
12 0.000000 0.999940 NaN
13 0.026362 0.999837 0.000004
14 0.018579 0.999989 NaN
15 0.026362 0.999951 NaN
16 0.036501 0.999854 NaN
17 0.028718 0.999987 NaN
18 0.022635 0.999979 NaN
19 0.018579 0.999986 NaN
20 0.026362 0.999983 NaN
计算仅适用于第13行(我希望从第13行开始看到值),并且第12行中的初始值0(在本例中)也会被NaN覆盖。我做错了什么?