You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Pandas DataFrame的列索引添加额外层级?

Pandas DataFrame 添加顶层列索引实现方法

实现核心是通过构造MultiIndex多级索引对象,替换原DataFrame的列索引属性即可完成需求,示例代码如下:

1. 导入依赖并构造示例DataFrame

import pandas as pd
import numpy as np

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}
})

2. 构造多级列索引并替换

首先按照你需要的分组规则定义顶层索引和对应子列的映射关系,再生成多级索引替换原列索引即可:

# 自定义列分组规则:键为顶层索引名,值为对应子列列表,可按需调整
col_groups = {
    "基础信息": ["Escola", "Série", "Tipo"],
    "当期招生数据": ["Matrícula", "Meta", "%"],
    "历史预测数据": ["Média Histórica", "Matrícula Projetada"],
    "完成度统计": ["Meta Total", "%P", "% Meta", "# Alunos que Faltam"]
}

# 生成多级列索引元组
multi_columns = []
for top_level, sub_cols in col_groups.items():
    for col in sub_cols:
        multi_columns.append((top_level, col))

# 替换原DataFrame的列索引
dfa.columns = pd.MultiIndex.from_tuples(multi_columns)

其他场景补充

如果你需要给所有列添加同一个顶层索引,可以用更简洁的写法:

# 给所有列加统一的顶层索引“招生统计”
dfa.columns = pd.MultiIndex.from_product([["招生统计"], dfa.columns])

内容的提问来源于stack exchange,提问作者Guilherme Parreira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:06:04