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

创建Pandas透视表时如何保留所有列并维持原有聚合逻辑

解决方法:用pandas pivot_table保留所有列并统一聚合

这问题我碰到过!你现在只指定了values='Amount',所以透视表只生成这一列的聚合结果。要保留所有原有列,只需要把values参数设为原数据集中除了用作行索引的列之外的所有列就行,具体操作如下:

步骤1:明确索引列和值列

首先把你用作行索引的列单独提取出来,然后筛选出所有需要聚合的非索引列:

# 定义用作行索引的列(和你原来的参数一致)
index_cols = ('Company Code', 'Company Code Text', 'Partner Company Code', 'BKA Item', 'Subitem', 'BKA SubItem Text')
# 筛选出原数据中所有非索引的列,作为要聚合的值列
value_cols = [col for col in df.columns if col not in index_cols]

步骤2:生成包含所有列的透视表

将values参数设置为上面的value_cols列表,pivot_table会对每一列应用相同的聚合方式(默认是均值mean,如果你的需求是求和、计数等,可以手动指定aggfunc参数):

import pandas as pd

# 默认聚合方式(均值)
pivot1 = pd.pivot_table(df, index=index_cols, values=value_cols)

# 如果需要求和,修改aggfunc参数
# pivot1 = pd.pivot_table(df, index=index_cols, values=value_cols, aggfunc='sum')

# 查看结果
pivot1

补充说明

  • 如果原数据集中包含非数值型列(比如字符串),默认的mean聚合方式会报错,这时你可以调整aggfunc为适合的函数(比如count用来统计非空值数量),或者提前过滤掉不需要聚合的非数值列。
  • 如果需要对不同列使用不同的聚合方式,可以把aggfunc设为字典(比如aggfunc={'Amount': 'sum', 'OtherCol': 'mean'}),但根据你的需求,统一聚合方式的话用上面的方法就足够了。

内容的提问来源于stack exchange,提问作者Roberto Mulé

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 18:52:28