使用Python3.6
我有一个Pandas数据帧,使用以下代码从面板转换而来:
stocks = ['AAPL', 'JPM', 'JNJ', 'PG', 'XOM', 'VZ', 'IEF']
pnl = web.get_data_yahoo(stocks, start, end, interval = 'd')
df = pnl.to_frame().unstack(level=1)
df.columns = df.columns.swaplevel(0,1)
如果我在控制台中运行df
,它将以以下格式返回(带“Open”、“Low”、“Adj Close”等):
现在,当我试图计算一个简单的移动平均值时,我遇到了一个问题,比如说AAPL,使用:df['30sma_AAPL'] = df['AAPL']['Adj Close'].rolling(window=30, min_periods=0).mean()
。在
这个命令添加了新的列,但是没有将值放在df['AAPL']组中(我不知道group是否是正确的单词?)。例如,如果我运行df['AAPL']
,它会专门为AAPL输出'adjclose'、'Close'、'High'等。基本上,我希望有一个循环来计算每只股票的sma并将其值放入其组中。这个数据帧有可能吗?在
编辑:我想要的输出(假的):
minor IEF JNJ JPM PG VZ
Volume Volume Volume Volume Volume
Date
2017-11-17 941200.0 4112100.0 8989200.0 5919900.0 18732200.0
2017-11-16 1749200.0 4193800.0 9808000.0 7205100.0 13818000.0
2017-11-15 1933100.0 4811500.0 15384100.0 6688100.0 15726500.0
minor IEF JNJ JPM PG VZ
30_sma 30_sma 30_sma 30_sma 30_sma
Date
2017-11-17 100.0 50 25 26 45
2017-11-16 25 40 100 89 100
2017-11-15 75 30 12 75 60
IIUC,我想你想用从多索引列中进行元组切片的方法。在
编辑另一个语法(fromSO Post,作者@TedPetrou),用于从多重索引中进行选择:
^{pr2}$输出:
^{3}$相关问题 更多 >
编程相关推荐