如何为Pandas DataFrame前3列外的每7列添加分组标题
Pandas 实现指定分组的多级表头
实现步骤
- 明确列分组规则:前3列(S、K、L)不分组,剩余列每4列分为一组,对应分组标题B、C、D;顶层统一为MAIN TITLE。
- 构建三级列索引的层级标签:
- 顶层(Level 0):所有列统一使用
MAIN TITLE - 中间层(Level 1):前3列为空字符串,后续每4列分别对应
B、C、D - 底层(Level 2):保留原DataFrame的列名
- 顶层(Level 0):所有列统一使用
- 将构建好的多级索引赋值给DataFrame的
columns属性。
代码示例
import pandas as pd # 模拟原DataFrame data = { 'S': [0, 1], 'K': [0, 1], 'L': [0, 0], 'Z': [0, 0], 'X': [0, 0], 'C': [0, 0], 'V': [0, 0], 'Z': [0, 0], 'X': [0, 0], 'C': [0, 0], 'V': [0, 0], 'Z': [0, 0], 'X': [0, 0], 'C': [0, 0], 'V': [0, 0] } df = pd.DataFrame(data, index=['a', 'b']) # 构建多级列索引 cols = df.columns.tolist() level0 = ['MAIN TITLE'] * len(cols) level1 = ['', '', ''] + ['B']*4 + ['C']*4 + ['D']*4 level2 = cols df.columns = pd.MultiIndex.from_tuples(zip(level0, level1, level2), names=[None, None, None]) # 查看结果 print(df)
效果说明
运行代码后,DataFrame的表头会自动合并相同层级的标签,呈现出你需要的格式:顶层MAIN TITLE跨所有列,中间层B、C、D各自跨对应分组的4列,前3列的中间层为空,底层显示具体列名。
内容的提问来源于stack exchange,提问作者Alexandra
相关产品推荐
相关产品推荐

