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

使用Pandas生成multi index column透视表遇到问题如何解决

Pandas 多级列透视表实现方案

你现有的代码逻辑已经接近目标,只需要调整列的层级顺序,同时处理字符串类型value列的聚合规则即可,完整实现代码如下:

步骤1:构造示例数据(可跳过)

import pandas as pd

data = {
    'week': [1,1,1,1,1,1,2,2,2,2,2,2],
    'level': ['first','first','first','second','second','second','first','first','first','second','second','second'],
    'letter': ['A','B','C','D','E','A','A','B','C','D','E','A'],
    'pieces': [10,15,15,5,10,15,5,10,10,15,15,15],
    'value': ['$5','$10','$8','$10','$5','$10','$10','$5','$5','$10','$8','$10']
}
df = pd.DataFrame(data)

步骤2:生成目标透视表

pt = df.pivot_table(
    index=['level', 'letter'],
    columns='week',
    values=['pieces', 'value'],
    # 按实际需求指定聚合规则:单组无重复数据用first即可,有重复时可分字段指定
    aggfunc={'pieces': 'sum', 'value': 'first'}
)
# 调换列层级顺序:将周设为顶层列,指标设为子列,再按列排序
pt = pt.swaplevel(axis=1).sort_index(axis=1)

如果需要对value列做数值计算,可提前将其转换为数值类型:

# 去除$符号转整数,后续即可用sum等聚合函数
df['value'] = df['value'].str.replace('$', '', regex=False).astype(int)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:54:02