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

如何用Pandas的pivot_table将指定表格转为目标透视表?

Pandas透视表转换问题解决指导

我是一名新手,想把包含Discipline、MR Cat、Field、Qty、Currency、Price列的原始表格,通过Pandas的pivot_table转成目标格式:行展示Discipline、MR Cat、Field、Qty,列按Currency(如USD、EUR)展开,单元格对应对应分组下的Price求和值。

我试了这段代码但没得到想要的结果:

df2=df.pivot_table(index=['Discipline','MR Cat','Field','Qty'],columns=['Currency'],values=['Price'],fill_value=0,aggfunc=sum)
print(df2.reset_index()) 

问题出在哪

  1. 用了values=['Price'],会让透视表生成多层列结构(顶层是Price,下层才是Currency),和目标格式的扁平列不符
  2. 重置索引后,列的轴标签(Currency)还会保留,影响最终格式

修正后的代码

# 生成透视表,values用单个字符串而非列表,避免多层列
df2 = df.pivot_table(
    index=['Discipline', 'MR Cat', 'Field', 'Qty'],
    columns='Currency',
    values='Price',
    fill_value=0,
    aggfunc='sum'
)

# 重置索引把层级索引转为普通列,同时移除列的轴标签
df2 = df2.reset_index().rename_axis(None, axis=1)

print(df2)

代码说明

  • values='Price':让透视表直接以Currency作为列名,不会生成Price顶层列
  • rename_axis(None, axis=1):去掉列上方的Currency标签,让列名完全匹配目标格式
  • 如果原始数据存在重复的分组组合,aggfunc='sum'会自动对Price求和,符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:02:44