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

多索引DataFrame中如何将列标题Mode移至下一行?

如何将DataFrame的列标题Mode移至下一行?

原始代码

from collections import defaultdict
import pandas as pd

dic = {'US':{'Traffic':{'new':1415, 'repeat':670}, 'Sales':{'new':67068, 'repeat':105677}},
      'UK': {'Traffic':{'new':230, 'repeat':156}, 'Sales':{'new':4568, 'repeat':10738}}}
d1 = defaultdict(dict)
for k, v in dic.items():
    for k1, v1 in v.items():
        for k2, v2 in v1.items():
            d1[(k, k2)].update({k1: v2})

df = pd.DataFrame.from_dict(d1, orient='index').reset_index()
df.columns = ['Country', 'User Type', 'Traffic', 'Sales']

# 后续插入列与调整列索引操作
df.insert(loc=2, column=' ', value=None)
df.insert(loc=0, column='Mode', value='Website')
df.columns = df.columns.rename("Metric", level=1)

当前列标题样式

当前DataFrame采用双层列索引:

  • 上层仅第一列标注为Mode,其余列上层标题为空
  • 所有列的下层统一标注为Metric
    显示时Mode单独占据第一行标题行,与下层的Metric行分离。

期望样式

希望将Mode标题移至下层,与其他列的Metric标题处于同一行,形成上层标题统一(可设为空)、下层包含Mode及原各列标题的结构。

实现方法

通过重新构造双层列索引,将Mode调整到下层标题行:

# 重新生成双层列索引,上层统一设为空,下层对应列名
new_cols = pd.MultiIndex.from_tuples(
    [(None, col[1]) if col[0] != 'Mode' else (None, 'Mode') for col in df.columns],
    names=[None, 'Metric']
)

# 替换原列索引
df.columns = new_cols

执行后,Mode会和其他列的下层标题显示在同一行,符合预期样式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:40:47