我有一个类似于下面的DataFrame:
LAST PRICE VOLUME volume_ratio
date
2005-01-03 1202.08 1.332210e+09 1.23
2005-01-04 1188.05 1.552646e+09 1.55
2005-01-05 1183.74 1.428365e+09 1.65
2005-01-06 1187.89 1.331004e+09 1.23
2005-01-07 1186.19 1.273960e+09 0.83
2005-01-10 1190.25 1.213694e+09 1.06
如果 period = 5
,我想计算一个移动平均值 VAMA = CumSum/CumDiv
,其中 CumSum = (df['volume_ratio']*df['LAST PRICE']).cumsum()
,CumDiv = df['volume_ratio'].cumsum()
,并满足条件 CumDiv <= Period
。
起初我想使用 expanding.sum()
和 df.apply
,但我遇到了困难;类似于这样的东西:
cum_div = df['volume_ratio'].expanding(min_periods = 1).sum()
cum_summ = (df['LAST PRICE']*df['volume_ratio']).expanding(min_periods =1).sum()
df['cum_sum'] = df.apply(lambda x: cum_summ if cum_div <= 13, axis = 1)
这显然不起作用,所以我很想知道最好的方法来解决这个问题。
提前感谢。