将pandas多索引数据帧从rowswise转换为columnwis

2024-06-06 09:09:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我在zipline和pandas工作,使用to_frame()方法将pandas.Panel转换为pandas.DataFrame。这就是结果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等,但这些方法不是我想要的。我真的很困在这一点上,任何帮助都是感激的。


Tags: to方法dataframepandasstackziplineframeprice
1条回答
网友
1楼 · 发布于 2024-06-06 09:09:51

因为您已经有了一个多索引,stackunstack是您想要用来将行移动到cols的索引,反之亦然。也就是说,unstack应该做你想做的事情。如果你有一个数据帧df,那么df2 = df.unstack('minor')就可以了。或者更简单,因为默认情况下,stack/unstack使用最内层,df2 = df.unstack()

相关问题 更多 >