【问题标题】:How to add Levels to Column Index?如何将级别添加到列索引?
【发布时间】:2021-12-01 16:59:32
【问题描述】:

我想向数据框中的列索引添加级别。我该怎么做?

我有一个像这样的pandas dataframe

dfa = pd.DataFrame.from_dict({'Escola': {0: 'Brasília', 1: 'Brasília', 2: 'São Luis', 3: 'PIO XII'},
                             'Série': {0: 'EF2', 1: 'EF8', 2: 'BER1', 3: 'EI5'},
                             'Tipo': {0: 'Rematrícula', 1: 'Rematrícula', 2: 'Nova', 3: 'Nova'},
                             'Matrícula': {0: 0.0, 1: 0.0, 2: 0.0, 3: 2.0},
                             'Meta': {0: 164, 1: 176, 2: 9, 3: 12},
                             '%': {0: 0.0, 1: 0.0, 2: 0.0, 3: 16.7},
                             'Média Histórica': {0: np.nan, 1: 13, 2: np.nan, 3: 5},
                             'Matrícula Projetada': {0: 0, 1: 13, 2: 0, 3: 7},
                             'Meta Total': {0: 164, 1: 176, 2: 9, 3: 23},
                             '%P': {0: 0.0, 1: 7.4, 2: 0.0, 3: 30.4},
                             '% Meta': {0: 0.0, 1: 7.4, 2: 0.0, 3: 30.4},
                             '# Alunos que Faltam': {0: 164, 1: 163, 2: 9, 3: 16}})
dfa
     Escola Série         Tipo  ...    %P  % Meta  # Alunos que Faltam
0  Brasília   EF2  Rematrícula  ...   0.0     0.0                  164
1  Brasília   EF8  Rematrícula  ...   7.4     7.4                  163
2  São Luis  BER1         Nova  ...   0.0     0.0                    9
3   PIO XII   EI5         Nova  ...  30.4    30.4                   16

我想在列名上添加一个顶行:

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以根据需要创建元组并使用pd.MultiIndex.from_tuples。 无需重复所有列名,只需知道您想将现有列分组为(3, 3, 4, 2)

    dfa.columns = pd.MultiIndex.from_tuples(zip(
        [''] * 3 + ['Name1'] * 3 + ['Name2'] * 4 + ['Name3'] * 2,
        dfa.columns,
    ))
    

    结果是:

    >>> dfa
                                       Name1                      Name2  \
         Escola Série         Tipo Matrícula Meta     % Média Histórica   
    0  Brasília   EF2  Rematrícula       0.0  164   0.0             NaN   
    1  Brasília   EF8  Rematrícula       0.0  176   0.0            13.0   
    2  São Luis  BER1         Nova       0.0    9   0.0             NaN   
    3   PIO XII   EI5         Nova       2.0   12  16.7             5.0   
    
                                            Name3                      
      Matrícula Projetada Meta Total    %P % Meta # Alunos que Faltam  
    0                   0        164   0.0    0.0                 164  
    1                  13        176   7.4    7.4                 163  
    2                   0          9   0.0    0.0                   9  
    3                   7         23  30.4   30.4                  16  
    

    【讨论】:

    • 谢谢@Pierre D!我也可以将这些名称居中吗? (或者我应该通过css 去吗?)
    • 您可以尝试使用pd.Styler,如here 所述。但这会将所有列居中,而不仅仅是第一级列。
    猜你喜欢
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 2012-10-25
    • 1970-01-01
    相关资源
    最近更新 更多