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

如何将Pandas列MultiIndex的第一层转换为行MultiIndex

实现方法

你只需要调用Pandas的stack方法,指定要移动的列层级即可,一行代码就能实现目标效果:

import pandas as pd

# 你的原始构造代码
df = pd.DataFrame([[i+10*j for i in range(6)] for j in range(5)], index=[f"item{i}" for i in range(5)])
df.columns = pd.MultiIndex.from_product((["abc", "xyz"], ["one", "two", "three"]))

# 核心转换代码
res = df.stack(level=0)

输出的res就是你需要的目标结构。


思路说明

  • 这个需求本质是将列方向的多层索引(MultiIndex)中指定层级,移动到行方向的多层索引中,Pandas内置的stack函数就是专门用来处理这类宽表转长表的层级移动场景
  • 你的列MultiIndex一共有两层:第一层(level=0)是abc/xyz,第二层(level=1)是one/two/three。调用stack(level=0)就是把列的第一层移动到行索引的末尾,剩下的列第二层保留作为新的列名,刚好匹配你要的结构
  • 如果需要调整行索引的层级先后顺序,可以额外调用reorder_levels方法,这个场景下默认的输出顺序已经和你的目标一致,不需要额外调整

内容的提问来源于stack exchange,提问作者Honza S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:45:05