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

如何对Pandas DataFrame指定列范围分组?使用Multindex未生效求助

你可以通过给DataFrame的列设置MultiIndex实现列分组效果,参考操作代码如下:

手动构造列映射(适合列数不多的场景)

import pandas as pd

# 替换为你自己的原始数据读入逻辑,比如pd.read_excel/ pd.read_csv
df = pd.read_csv("你的数据文件路径")

# 按照你的分组需求,构造和原始列数量一一对应的多级列名元组
# 格式为:(一级分组名, 二级列名)
multi_col = [
    ("基础信息", "姓名"),
    ("基础信息", "年龄"),
    ("问题1", "题干"),
    ("问题1", "答案"),
    ("问题2", "题干"),
    ("问题2", "答案"),
    # 后续列按上面的格式补全
]

# 给df设置多级列索引
df.columns = pd.MultiIndex.from_tuples(multi_col)

自动生成列映射(适合列名有统一命名规则的场景)

如果你的列名是规律命名,比如所有问题答案列都带「答案」后缀,可以自动生成多级列名,不用手动逐个写:

def col_map(col_name):
    # 自定义你的列匹配规则,下面是示例,可根据自己的实际命名调整
    if col_name in ["姓名", "年龄", "学号"]:
        return ("基础信息", col_name)
    elif "答案" in col_name:
        q_group = col_name.replace("答案", "")
        return (q_group, "答案")
    else:
        return (col_name, "题干")

df.columns = pd.MultiIndex.from_tuples([col_map(c) for c in df.columns])

常见报错原因

如果之前设置MultiIndex失败,大概率是构造的多级列名列表长度和原始df的列数量不一致,可以先打印len(multi_col)和len(df.columns)核对数量匹配后再赋值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:15:03