如何为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
相关产品推荐
相关产品推荐

