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

如何使用Pandas创建指定格式的多级列透视表?

Python实现多级列透视表解决方案

源数据结构

DateNameP&LPercentage
2023.1.1Amy1.1%2%
2023.1.1Peter1.2%3%

预期透视表格式

DateAmyPeter
P&LPercentage
2023.1.11.1%2%

问题分析

你当前使用的pivot_table代码生成的列层级顺序是指标(P&L/Percentage)在前,Name在后,和预期的层级顺序相反,所以呈现结果不符合要求。

正确实现方法

可以通过两种方式实现:

方法1:调整pivot_table的列层级顺序

先执行你原来的pivot_table,然后交换列的层级并重新排序:

import pandas as pd

# 构造源DataFrame
df = pd.DataFrame({
    'Date': ['2023.1.1', '2023.1.1'],
    'Name': ['Amy', 'Peter'],
    'P&L': ['1.1%', '1.2%'],
    'Percentage': ['2%', '3%']
})

# 生成透视表后交换列层级
result = df.pivot_table(index='Date', values=['P&L', 'Percentage'], columns='Name')
# 交换列的两个层级,并按Name排序
result = result.swaplevel(axis=1).sort_index(axis=1)
# 重置列名的显示(可选,让表头更简洁)
result.columns = result.columns.map(' '.join)
print(result)

方法2:使用pivot直接生成符合层级的透视表

如果数据没有重复的Date+Name组合,用pivot更直接,默认会把Name作为上层列,指标作为下层列:

result = df.pivot(index='Date', columns='Name', values=['P&L', 'Percentage'])
# 同样可以调整列名显示
result.columns = result.columns.swaplevel().map(' '.join)
print(result)

两种方法最终都能得到你预期的多级列透视表结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:50:45