Pandas数据帧多级索引/列

2024-06-18 13:18:23 发布

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

我在组织数据帧时遇到了一些困难。我觉得这很简单,但我已经坚持了太久了:

这是df1:

     Output Energy, (Wh/h)  Lights (Wh)  Lights+Media (Wh)  Total Usage (h)  \
Hour                                                                           
1                       0.0          0.0                0.0              0.0   
2                       0.0          0.0                0.0              0.0   
3                       0.0          0.0                0.0              0.0   
4                       0.0          0.0                0.0              0.0   
5                       0.0          0.0                0.0              0.0   

为了便于使用,我希望将其转换:

^{pr2}$

给我:

    Hour                     1    2    3    4   
    Output Energy, (Wh/h)  0.0  0.0  0.0  0.0     
    Lights (Wh)            0.0  0.0  0.0  0.0     
    Lights+Media (Wh)      0.0  0.0  0.0  0.0     
    Total Usage (h)        0.0  0.0  0.0  0.0    
    Lights (h)             0.0  0.0  0.0  0.0  
    Light+Media (h)        0.0  0.0  0.0  0.0  

但最终,我希望它看起来像这样:

                                       Hour
                                  1    2    3    4   
          Output Energy, (Wh/h)  0.0  0.0  0.0  0.0     
          Lights (Wh)            0.0  0.0  0.0  0.0     
CU-101    Lights+Media (Wh)      0.0  0.0  0.0  0.0     
          Total Usage (h)        0.0  0.0  0.0  0.0    
          Lights (h)             0.0  0.0  0.0  0.0  
          Light+Media (h)        0.0  0.0  0.0  0.0  

我一直试图添加'Cu-101'作为多级列,但没有成功。我应该在它换位之前还是之后加上这个?在

另外,移动'Hour'-我将这个列设置为索引,但是如何将它移动到一个新的级别呢?在


Tags: 数据outputusage级别mediaenergytotallight
2条回答

@jezrael的回答是正确的方法,如果我在写别人要读的代码,我也会这么做。在

这里有一些快速而有创意的方法

1

df = df.T
df.index = [['CU-101'] * len(df), df.index]
df.columns = [['Hour'] * len(df.columns), df.columns]

2

^{pr2}$

您可以使用^{}

df.index = pd.MultiIndex.from_arrays([['Hour'] * len(df.index),
                                      df.index], 
                                      names=(None,None))
df.columns = pd.MultiIndex.from_arrays([['CU-101'] * len(df.columns),
                                        df.columns], 
                                        names=(None,None))

print (df.T)
                             Hour                    
                                1    2    3    4    5
CU-101 Output Energy, (Wh/h)  0.0  0.0  0.0  0.0  0.0
       Lights (Wh)            0.0  0.0  0.0  0.0  0.0
       Lights+Media (Wh)      0.0  0.0  0.0  0.0  0.0
       Total Usage (h)        0.0  0.0  0.0  0.0  0.0

相关问题 更多 >