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

如何将pandas双层层级列扁平化为带唯一命名的单层列

实现方法

双层级列的结构本质是列索引为MultiIndex类型,每一列的完整标签是(上层列名, 下层整数id)的元组,直接对元组做字符串拼接后覆盖columns属性即可完成扁平化。

代码示例

首先模拟你unstack后生成的双层列DataFrame:

import pandas as pd
# 模拟unstack后的双层列结构
data = [[1, 2, 3, 4, 5, 6]]
columns = pd.MultiIndex.from_tuples([
    ('columnName', 1), ('columnName', 2), ('columnName', 3),
    ('otherColumnName', 1), ('otherColumnName', 2), ('otherColumnName', 3)
])
df = pd.DataFrame(data, columns=columns)

核心修改逻辑(一行即可完成):

# 用-作为连接符拼接两层标签,可按需替换为其他连接符
df.columns = [f"{col[0]}-{col[1]}" for col in df.columns]

修改完成后即可直接通过df['columnName-1']、df['otherColumnName-1']的形式访问对应列,完全符合需求。

补充说明:你之前查到的get_level_values()仅能单独提取某一层的所有标签,无法直接完成两层标签的拼接合并,因此不适用该场景。

如果需要适配任意层级的列索引扁平化,可使用更通用的写法:

# 适配N层列索引,每层标签都用-连接
df.columns = ['-'.join(map(str, col)) for col in df.columns]
搜索关键词建议
  • pandas 多层列 扁平化 重命名
  • pandas MultiIndex columns 转单层
  • pandas unstack后修改列名
  • pandas 双层列名合并

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:42:02