如果我有一支股票,我会计算移动平均线:
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或层次索引,一次性地最有效地计算框架中所有股票的移动平均线?我也想要其他统计数据,如果这有所不同......
答案 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))