因此,我试图找出一种向量化计算的好方法,但我有些困惑。
| A | B (Calculation) | B (Value) |
|---|----------------------|-----------|
| 1 | | |
| 2 | | |
| 3 | | |
| 4 | =SUM(A1:A4)/4 | 2.5 |
| 5 | =(1/4)*A5 + (3/4)*B4 | 3.125 |
| 6 | =(1/4)*A6 + (3/4)*B5 | 3.84375 |
| 7 | =(1/4)*A7 + (3/4)*B6 | 4.6328125 |
我基本上是在尝试复制Wilder's Average True Range(不使用TA-Lib)。在我的简化示例中,列A是预先计算的True Range。
关于如何执行此操作而不循环的任何想法?分解等式实际上是加权的累加总和...但是,这绝对不是现有的熊猫累积允许开箱即用的东西。
最佳答案
这确实是一个ewm
问题。问题是前四行挤在一起成为一行...然后ewm
接管
a = df.A.values
d1 = pd.DataFrame(dict(A=np.append(a[:4].mean(), a[4:])), df.index[3:])
d1.ewm(adjust=False, alpha=.25).mean()
A
3 2.500000
4 3.125000
5 3.843750
6 4.632812