我有一个df,其sym_df中的两个符号“ SPY”和“ JPM”的收盘价接近。 我想创建一个多索引df以便能够在每个符号上运行测试。目前,我一次要进行所有库存处理,但不会使用PD Multiindex DF一次完成所有处理。
我知道pd面板已被弃用,因此我正在寻找创建3D df的另一种方法。
>>>print(sym_df)
SPY JPM
2010-01-04 108.27 40.87
2010-01-05 108.56 41.67
2010-01-06 108.64 41.89
2010-01-07 109.10 42.72
2010-01-08 109.46 42.62
... ... ...
2011-12-23 125.19 32.84
2011-12-27 125.29 32.31
2011-12-28 123.64 31.94
2011-12-29 124.92 32.69
2011-12-30 124.31 32.53
[504 rows x 2 columns]
>>>spy_df = pd.DataFrame({'Adj_Close_Price': sym_df['SPY']})
>>>data = {'SPY':spy_df}
>>>sym_df = sym_df.drop(['SPY'], axis=1)
>>>sym_df = sym_df.rename(columns={symbol: 'Adj_Close_Price'})
>>>data[symbol] = sym_df
>>>print(data)
{'SPY': Adj_Close_Price
2010-01-04 108.27
2010-01-05 108.56
2010-01-06 108.64
2010-01-07 109.10
2010-01-08 109.46
... ...
2011-12-23 125.19
2011-12-27 125.29
2011-12-28 123.64
2011-12-29 124.92
2011-12-30 124.31
[504 rows x 1 columns], 'JPM': Adj_Close_Price
2010-01-04 40.87
2010-01-05 41.67
2010-01-06 41.89
2010-01-07 42.72
2010-01-08 42.62
... ...
2011-12-23 32.84
2011-12-27 32.31
2011-12-28 31.94
2011-12-29 32.69
2011-12-30 32.53
[504 rows x 1 columns]}
>>>df = pd.concat(data.values(), keys=data.keys())
>>>print(df)
Adj_Close_Price
SPY 2010-01-04 108.27
2010-01-05 108.56
2010-01-06 108.64
2010-01-07 109.10
2010-01-08 109.46
... ...
JPM 2011-12-23 32.84
2011-12-27 32.31
2011-12-28 31.94
2011-12-29 32.69
2011-12-30 32.53
[1008 rows x 1 columns]
>>>print(type(df))
<class 'pandas.core.frame.DataFrame'>
答案 0 :(得分:0)
您使用了方括号()
而不是方括号[]
。同样,您所做的也可以简化为一个命令:
df = sym_df.unstack().to_frame('Adj_Close_Price')
df.loc['SPY']
结果:
Adj_Close_Price
2010-01-04 108.27
2010-01-05 108.56
2010-01-06 108.64
2010-01-07 109.10
2010-01-08 109.46
2011-12-23 125.19
2011-12-27 125.29
2011-12-28 123.64
2011-12-29 124.92
2011-12-30 124.31