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

如何使用Pandas生成排序选择投票场景下带层级汇总的透视表?

解决方案

可以实现你需要的分层汇总透视表效果,核心思路是手动拼接各层级的聚合结果,再生成带多级索引的汇总表,和Excel的自动分类汇总效果一致。

实现代码

import pandas as pd
import numpy as np

# 1. 计算各层级汇总数据
# 一级汇总:仅统计第一选择的总票数
level1 = df.groupby('1st', as_index=False)['Votes'].sum()
level1[['2nd', '3rd']] = '', ''

# 二级汇总:统计第一+第二选择的总票数
level2 = df.groupby(['1st', '2nd'], as_index=False)['Votes'].sum()
level2['3rd'] = ''

# 三级汇总:原始的第一+第二+第三选择明细汇总
level3 = df.groupby(['1st', '2nd', '3rd'], as_index=False)['Votes'].sum()

# 2. 合并所有层级数据,设置多级索引
final_df = pd.concat([level1, level2, level3], ignore_index=True)\
            .set_index(['1st', '2nd', '3rd'])\
            .sort_index()

效果说明

运行后输出的final_df在控制台/Jupyter中会自动合并上层重复索引,呈现缩进的层级效果,数值完全匹配你期望的各层级计数:

  • 第一级行(仅1st有值,2nd、3rd为空)对应第一选择的总票数
  • 第二级行(1st、2nd有值,3rd为空)对应前两级选择的总票数
  • 第三级行对应三级选择的明细票数

如果需要完全复刻Excel的带折叠分割线的交互效果,可以将结果导出到Excel:

final_df.to_excel('rank_vote_summary.xlsx', merge_cells=True)

打开导出的Excel文件后,选中索引列,点击「数据」选项卡下的「组合」,即可自动生成分级折叠视图,和你描述的Excel原生效果完全一致。

原代码问题说明

你原来的pivot_table写法默认仅返回所有索引维度都存在的最细粒度聚合结果,不会自动生成上层维度的小计行,因此只能看到三级都匹配的明细数据,看不到一二级的汇总值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:48:02