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

如何一次性为pandas DataFrame的MultiIndex列设置新的一级索引列

解决方案

有两种非常简便的一步实现方式,无需多步操作或循环:

方法1:利用pd.concat的keys参数(最推荐)

pd.concat自带的keys参数可以直接为拼接的DataFrame新增一级列索引,一行完成操作:

df = pd.concat([df, df_type3], axis=1, keys=['type3'], names=df.columns.names)

参数说明:

  • keys=['type3']:自动为df_type3的所有列添加上层索引type3
  • names=df.columns.names:直接复用原DataFrame的MultiIndex命名,保持列索引格式统一

方法2:类单级列的直接赋值写法

如果想要和单级索引df['new_col'] = xxx风格一致的赋值写法,可以配合层级切片实现:

df.loc[:, ('type3', slice(None))] = df_type3

元组('type3', slice(None))指代一级索引为type3、二级索引任意的所有列,pandas会自动匹配df_type3的列与二级索引对应赋值,无需提前构造MultiIndex。

之前的尝试2失败是因为语法问题:变量名多写了下划线,且多层索引的通配不能直接在元组内写:,需要用slice(None)或者pd.IndexSlice对象代替。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:36:04