Pandas Dataframe - 多级索引/列

时间:2017-02-04 21:11:19

标签: python python-2.7 pandas

我在组织数据框时遇到了一些困难。我认为这很简单,但我已经坚持了这么久:

这是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   

我希望将其转换为易用性:

df2 =df1.T

给了我:

    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'作为一个多级列,但无济于事。我应该在转置之前或之后添加它吗?

此外,移动'小时' - 我将此列设置为索引,但如何将其移至新级别?

2 个答案:

答案 0 :(得分:5)

您可以使用mallopt manpage

<system.webServer>
    <handlers>
      <add name="JavaScriptHandler"
         path="*.js"
         verb="*"
         preCondition="integratedMode"
         type="System.Web.StaticFileHandler" />
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler"
           path="*"
           verb="*"
           preCondition="integratedMode"
           type="System.Web.HttpNotFoundHandler" />
    </handlers>
</system.webServer>

答案 1 :(得分:2)

@ jezrael的回答是正确的做法以及如果我正在编写其他人想要阅读的代码的话。

但这里有一些创造性的快速和肮脏的方式

1

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

2

pd.concat([pd.concat([df.T], keys=['CU-101'])], axis=1, keys=['Hour'])