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

