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

如何对Pandas multilevel DataFrame进行pivot/transpose以实现指定格式转换?

解决方案

操作步骤

要完成这个多级DataFrame的结构转换,核心是调整索引与列的层级关系,具体操作如下:

  1. 还原原始DataFrame结构
    先复现你的初始数据结构:
import pandas as pd

data = [['M', 10, 1, 50, 14], ['F', 20, 3, 5, 2]]
columns = pd.MultiIndex.from_tuples([
    ('Gender', ''), ('A', 'sum'), ('A', 'count'), ('B', 'sum'), ('B', 'count')
])
df = pd.DataFrame(data, columns=columns)
  1. 将Gender列设为行索引
    把表格中Gender列的M/F值转为行索引,为后续转置做准备:
df = df.set_index(('Gender', ''))
  1. 转置DataFrame
    交换行与列,让原有的A/B、sum/count组合成为行索引,M/F成为列:
df_transposed = df.T
  1. 拆分多级行索引为普通列
    把转置后的多级行索引拆分为Category(对应A/B)和Metric(对应sum/count)两列:
df_reset = df_transposed.reset_index(names=['Category', 'Metric'])
  1. 重塑表格并调整列层级
    通过pivot重新组织结构,再交换列的层级顺序,让M/F成为第一层级列,sum/count成为第二层级:
result = df_reset.pivot(index='Category', columns='Metric').swaplevel(axis=1).sort_index(axis=1)
  1. 整理最终格式
    重置行索引,把Category列重命名为Gender,并调整表头对齐:
result = result.reset_index().rename(columns={'Category': 'Gender'})
# 适配多级表头显示逻辑
result.columns = pd.MultiIndex.from_tuples([
    ('Gender', '') if col[0] == 'Gender' else (col[1], col[0]) 
    for col in result.columns
])

执行完上述代码后,输出结果将完全匹配你预期的多级DataFrame结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 04:57:14