Pandas a有一个非常有效的方法来计算ewm,我查看了源代码但是找不到实际使用的方法。我假设它是为了速度而进行的cython化。
有人能够如此快速地展示实际的方法吗,因为我能想到的唯一方法就是迭代和计算:
value = df.columns.get_loc('value')
ema = df.columns.get_loc('ema')
alpha = 0.01 #example
for i in range(0, len(df) -1):
if(i>0):
df.iat[i, ema] = df.iat[i-1,ema] + alpha*(df.iat[i,value] - df.iat[i-1,ema])
else:
df.iat[i, ema] = df.iat[i,value]