计算一组股票的相同移动平均线

时间:2014-08-21 07:00:03

标签: python pandas

如果我有一支股票,我会计算移动平均线:

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)

......我怎么能用一个Panel或层次索引,一次性地最有效地计算框架中所有股票的移动平均线?我也想要其他统计数据,如果这有所不同......

1 个答案:

答案 0 :(得分:1)

如果您只想要带有后缀的其他列,则只需指定所需的列名称即可。

ewma_col = [c + '_ewma' for c in df]
df[ewma_col] = df.apply(lambda x: pd.ewma(x, span=15))

如果你想设置一个MultiIndex,你可以这样做,首先设置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))