Python中的加权累积和

时间:2017-03-23 17:49:15

标签: python-2.7 pandas numpy

所以我试图找出一种矢量化计算的好方法,而且我有点卡住了。

| 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。

Average True Range Equation

有关如何在不循环的情况下执行此操作的任何想法?打破这个等式,它实际上是一个加权的累积总和......但它绝对不是现有的大熊猫口袋允许开箱即用的东西。

1 个答案:

答案 0 :(得分:5)

这确实是一个ewm问题。问题是前4行被挤在一起......然后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