将多个数据帧组合成多索引列的数据帧

问题描述 投票:0回答:1

假设我有 3 个数据框,

df_1
代表收入

Year        TSLA    MSFT     AVY
2019         851     200   112.8
2018         725     150    92.6

df_2
代表一些其他收入

Year        TSLA    MSFT     AVY
2019          10      13      17
2018          11      14      18

df_3
代表费用

Year        TSLA    MSFT     AVY
2019         110     213     317
2018         111     214     418

获取以下 df 的代码可能是什么?

       TSLA                             MSFT                             AVY
Year   revenues other_revenues expenses revenues other_revenues expenses revenues other_revenues expenses
2019        851             10      110      200             13      213    112.8             17      317
2018        725             11      111      150             14      214     92.6             18      418

其中的列采用多索引形式?

谢谢

python python-3.x pandas dataframe multi-index
1个回答
2
投票

使用

concat
DataFrame.swaplevel
DataFrame.sort_index
进行排序
MultiIndex
:

#if not Year is index first create it
L = [x.set_index('Year') for x in [df_1, df_2, df_3]]
df = (pd.concat(L, 
               axis=1, 
               keys=('revenues', 'other_revenues', 'expenses'))
        .swaplevel(1, 0, axis=1)
        .sort_index(axis=1))
print (df)
         AVY                            MSFT                            TSLA  \
     revenues expenses other_revenues revenues expenses other_revenues revenues   
Year                                                                           
2019   112.8      317             17     200      213             13     851   
2018    92.6      418             18     150      214             14     725   

                              
     expenses other_revenues  
Year                          
2019      110             10  
2018      111             11  

编辑:对于像原始订单一样的顺序,从 DataFrame.reindex

 第一级的唯一值中添加 
MultiIndex.from_product
MultiIndex
    

© www.soinside.com 2019 - 2024. All rights reserved.