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

Pandas复制多级索引DataFrame列时保留二级表头的方法

问题原因

带两级表头的DataFrame列是MultiIndex结构,每一列的唯一标识是(一级列名, 二级列名)形式的元组。直接执行df['D'] = df['A']时,赋值左侧仅传入了一级列名D,没有指定对应的二级列名,pandas会默认将新列的二级索引置空,最终就会出现二级表头缺失的情况。

解决方法

根据复制场景选对应写法即可:

  • 若要复制的一级列下只有单个二级子列(即示例中A列下只有a的场景),直接显式指定两级列名元组赋值,代码最简洁:
# 新列名传入(一级名, 二级名)元组,二级名和原列保持一致即可
df[('D', 'a')] = df[('A', 'a')]
  • 若要复制的一级列下有多个二级子列,想要一次性完整保留所有二级表头,用通用写法即可,不需要手动枚举二级列名:
# 提取要复制的原列组
copy_part = df['A'].copy()
# 将提取部分的一级列名替换为新列名D,原有二级列名全部保留
copy_part.columns = pd.MultiIndex.from_product(
    [['D'], copy_part.columns]
)
# 拼接回原DataFrame
df = pd.concat([df, copy_part], axis=1)
效果验证

运行上述代码后打印df,即可得到预期输出:

A  B  C  D
   a  b  c  a
0  1  2  3  1
1  4  5  6  4
2  7  8  9  7

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:45:41