在一组股票上计算相同的移动平均线
如果我只有一只股票,我会这样计算移动平均:
frame = sql.read_frame(...)
frame['ewma'] = ewma(frame['px'], span=15)
那么,如果我有一整套价格数据,每只股票都有一系列数据:
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 819 entries, 2011-06-30 00:00:00 to 2014-08-19 00:00:00
Freq: B
Data columns (total 10 columns):
StockA 292 non-null values
StockB 303 non-null values
...
dtypes: float64(10)
...我该如何使用比如说面板或层级索引,最有效地一次性计算所有股票的移动平均呢?如果需要其他统计数据的话,这会有影响吗...
1 个回答
1
如果你只是想要一些额外的列,并且这些列的名字后面加个后缀,你可以直接给想要的列命名。
ewma_col = [c + '_ewma' for c in df]
df[ewma_col] = df.apply(lambda x: pd.ewma(x, span=15))
如果你想设置一个多重索引(MultiIndex),你可以先设置好这个多重索引,然后再添加ewma的内容。
df.columns = pd.MultiIndex.from_product([df.columns, ['price']])
ewma_col = [(c, 'ewma') for c, _ in df]
df[ewma_col] = df.apply(lambda x: pd.ewma(x, span=15))