如何使用pandas melt将堆叠的列展平为变量[重复]

4zcjmb1e  于 2023-05-21  发布在  其他
关注(0)|答案(1)|浏览(129)

此问题已在此处有答案

How do I melt a pandas dataframe?(3个答案)
20小时前关闭。
在pandas中阅读具有堆叠列的矩阵数据
你好啊
Python新手在这里需要一些帮助,在阅读xls文件与以下格式的Pandasdataframe和书面记录
xls布局如下所示

|   SP500 | DJIA    
    |   Equity| Equity
    |   Large | BlueChip
-----------------------------           
1-Apr-23 |  3.51  | 2.56
1-Mar-23 |  -2.61 | 1.89
1-Feb-23 |  6.18  | -4.06
1-Jan-23 |  -5.9  | 2.83

基本上是两个主要指数的业绩回报时间序列。
我想把它弄平像这样

Date     | Index | AssetClass | Type     | Return
1-Apr-23 | SP500 | Equities   | Large    | 3.51
1-Mar-23 | SP500 | Equities   | Large    | -2.61
1-Feb-23 | SP500 | Equities   | Large    | 6.18
1-Jan-23 | SP500 | Equities   | Large    | -5.9
1-Apr-23 | DJIA  | Equities   | BlueChip | 2.56
1-Mar-23 | DJIA  | Equities   | BlueChip | 1.89
1-Feb-23 | DJIA  | Equities   | BlueChip | -4.06
1-Jan-23 | DJIA  | Equities   | BlueChip | 2.83

对于单列标题,我使用dataframe.melt()函数将其展平。我不确定我如何能实现它的堆叠列。
感谢你的帮助

mrwjdhj3

mrwjdhj31#

对于多索引列也是如此

out = df.melt(ignore_index=False, var_name=['Index', 'AssetClass', 'Type'], value_name='Return')

注意:确保使用header=[0,1,2])参数读取xlsx文件,以获取多索引列

print(out)

          Index AssetClass      Type  Return
1-Apr-23  SP500     Equity     Large    3.51
1-Mar-23  SP500     Equity     Large   -2.61
1-Feb-23  SP500     Equity     Large    6.18
1-Jan-23  SP500     Equity     Large   -5.90
1-Apr-23   DJIA     Equity  BlueChip    2.56
1-Mar-23   DJIA     Equity  BlueChip    1.89
1-Feb-23   DJIA     Equity  BlueChip   -4.06
1-Jan-23   DJIA     Equity  BlueChip    2.83

相关问题