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

Pandas如何将多层行索引第一层转为多层列索引第一层

Pandas多层行索引转多层列索引实现方案

你需要的转换可以通过Pandas原生的多层索引操作完成,仅需几行代码即可实现,完整可运行代码如下:

import pandas as pd
import numpy as np

# 构造原始DataFrame
indx = [('location', 'a'), ('location', 'b'), ('location', 'c'), ('location2', 'a'), ('location2', 'b'), ('location2', 'c')]
indx = pd.MultiIndex.from_tuples(indx)
col = ['S1','S2','S3']
df = pd.DataFrame(np.random.randn(6, 3), index=indx, columns=col)

# 核心转换逻辑
new_df = df.unstack(level=0)\
           .swaplevel(axis=1)\
           .sort_index(axis=1, level=0)

# 输出验证
print(new_df)

操作逻辑说明

  • unstack(level=0):将行索引的第0层(也就是location/location2所在的层级)从行维度移动到列维度,此时列索引的层级顺序为[S1/S2/S3, location/location2]
  • swaplevel(axis=1):交换列索引的两个层级,将location/location2调整为列索引的第一层,满足你对列层级顺序的要求
  • sort_index(axis=1, level=0):按列索引的第一层排序,保证同一个location下的S1/S2/S3列连续排列,和你给出的预期输出格式完全匹配

输出样例

运行上述代码后得到的new_df结构如下:

location                     location2                    
         S1        S2        S3        S1        S2        S3
a -0.453549 -0.079797  0.581657 -1.418821  0.847556  0.665808
b -0.458573 -0.732625 -2.277674  1.321825 -0.150274  0.507685
c  0.874403  0.459590 -1.220271  0.894865 -0.502577  2.460591

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:36:04