我正在使用zipline和pandas,并使用pandas.Panel
方法将pandas.DataFrame
转换为to_frame()
。这是结果pandas.DataFrame
,您可以看到它是多索引的:
price
major minor
2008-01-03 00:00:00+00:00 SPY 129.93
KO 26.38
PEP 64.78
2008-01-04 00:00:00+00:00 SPY 126.74
KO 26.43
PEP 64.59
2008-01-07 00:00:00+00:00 SPY 126.63
KO 27.05
PEP 66.10
2008-01-08 00:00:00+00:00 SPY 124.59
KO 27.16
PEP 66.63
我需要将此框架转换为如下所示:
SPY KO PEP
2008-01-03 00:00:00+00:00 129.93 26.38 64.78
2008-01-04 00:00:00+00:00 126.74 26.43 64.59
2008-01-07 00:00:00+00:00 126.63 27.05 66.10
2008-01-08 00:00:00+00:00 124.59 27.16 66.63
我尝试过pivot方法,stack / unstack等,但这些方法并不是我想要的。我真的非常坚持这一点,任何帮助都表示赞赏。
答案 0 :(得分:12)
由于您已经安装了MultiIndex,因此您需要使用stack
和unstack
将行移至cols,反之亦然。话虽这么说,unstack
应该完全按照你想要的方式完成。如果你有一个DataFrame df
,那么df2 = df.unstack('minor')
就可以了。或者更简单,因为默认情况下stack
/ unstack
使用最里面的级别df2 = df.unstack()
。