Pandas Dataframa手动EWMA计算无法按预期工作。公式复制到列?

时间:2015-12-02 12:03:46

标签: python pandas dataframe

您好我有以下数据,我正在尝试使用以下公式生成EXMA系列:

(Alpha * Prev_Exma)+((1-Alpha)* Outperf)

我的数据如下:

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覆盖。我做错了什么?

0 个答案:

没有答案