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

多级索引pandas透视表按Type A对指定列求和的实现方法

解决方法

你的透视表列是4级多层索引,层级从上到下依次为聚合函数/值字段/Type/月份,可以用pd.IndexSlice便捷筛选多级索引列后求和,代码如下:

import pandas as pd
# 定义多级索引筛选器
idx = pd.IndexSlice
# 筛选sum聚合下、Sales值、Type A分类的所有月份列,按行求和后作为新列添加
# 新列的4个空占位符对应4级列索引的位置,实现和原有层级对齐
pivot_1[('Type A Total', '', '', '')] = pivot_1.loc[:, idx['sum', 'Sales', 'Type A', :]].sum(axis=1)

# 若需要让新增列的列名和你预期的展示效果完全一致,可执行下面的代码调整列名层级
pivot_1.columns = pivot_1.columns.set_names(['', '', 'Type', 'Date_onlyMonth'])

运行后即可得到你预期的汇总效果:

sum                        len                  Type A Total
                             Sales                      Sales                  
Type                        Type A            Type B   Type A            Type B
Date_onlyMonth            2021-Sep 2021-Oct 2021-Nov 2021-Sep 2021-Oct 2021-Nov
Customer       Merchant                                                        
Donale Fucci   Merchant_B      NaN   4000.0      NaN      NaN      1.0      NaN   4000.0
Jo Watthanaram Merchant_C      NaN      NaN   5000.0      NaN      NaN      1.0      NaN
Susan Mock     Merchant_A   2000.0      NaN      NaN      1.0      NaN      NaN   2000.0
Tom Ford       Merchant_A   1000.0   8000.0      NaN      1.0      1.0      NaN   9000.0
               Merchant_B      NaN   3000.0      NaN      NaN      1.0      NaN   3000.0

错误原因说明

之前的代码报错是因为没有匹配多级索引的取值规则:

  • 直接传入底层索引(如2021-Sep、Type A)取列时,没有指定上层索引的匹配条件,会触发KeyError
  • 用[:, 'Type A Total']这种切片方式不符合DataFrame多级列索引的赋值语法,会触发类型错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:45:04