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

使用Pandas透视表重塑数据:实现Amount与Quantity分行展示

Pandas透视后实现Amount与Quantity分行展示

问题场景

现有如下DataFrame,希望通过透视操作将Amount和Quantity在同一Category、Code、Invoice、Unit Price组合下分行展示,而非横向并排:

import pandas as pd
import numpy as np

df = pd.DataFrame({
        'Year':[2022,2022,2023,2023,2024,2024],
        'Month':[1,12,11,12,1,1],
        'Code':[None,'John Johnson',np.nan,'John Smith','Mary Williams','ted bundy'],
        'Unit Price':[np.nan,200,None,56,75,65],
        'Quantity':[1500, 140000, 1400000, 455, 648, 759],
        'Amount':[100, 10000, 100000, 5, 48, 59],
        'Invoice':['soccer','basketball','baseball','football','baseball','ice hockey'],
        'energy':[100.,100,100,54,98,3],
        'Category':['alpha','bravo','kappa','alpha','bravo','bravo']
})

原使用pivot_table的代码得到的结果中,Amount和Quantity是横向并列的,不符合需求:

index_to_use = ['Category','Code','Invoice','Unit Price']
values_to_use = ['Amount','Quantity']
columns_to_use = ['Year','Month']

df2 = df.pivot_table(index=index_to_use,
                            values=values_to_use,
                            columns=columns_to_use)

解决方案

通过stack()操作将列层级中的Amount/Quantity转移到索引中,实现分行展示:

# 执行原透视操作
df2 = df.pivot_table(index=index_to_use,
                     values=values_to_use,
                     columns=columns_to_use)

# 将列的第一层(Amount/Quantity)转到索引,实现分行
df_result = df2.stack(level=0).rename_axis(index=index_to_use + ['Type'])

此时输出的结果中,同一Category、Code、Invoice、Unit Price组合下,Amount和Quantity会分别占据一行,符合需求。例如对应示例数据中2022年12月的记录,会显示为:

Category  Code           Invoice    Unit Price  Type      2022  12
bravo     John Johnson  basketball  200.0       Amount     10000
bravo     John Johnson  basketball  200.0       Quantity  140000

说明

  • stack(level=0):将列MultiIndex的第一层(即Amount和Quantity)移动到行索引中,从而实现同一索引组合下的分行展示
  • rename_axis:用于重命名索引层级,让输出结构更清晰
  • 如果需要调整列的显示格式,可以进一步使用unstack或reset_index来调整最终展示结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 04:53:08