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

如何在Pandas的pivot_table函数中将aggfunc求和结果除以2?

解决Pandas透视表聚合结果除以2的问题

首先注意原代码的关键问题:points_for列存储的是字符串类型,直接用sum聚合会得到字符串拼接结果,而非数值求和。必须先将该列转换为数值类型,再进行后续处理。

方法一:透视表聚合后直接除以2

先转换数据类型,生成透视表后对结果整体做除法运算:

import pandas as pd

# 创建DataFrame并转换points_for为整数类型
df = pd.DataFrame({'team': ['A', 'B','B', 'B','A', 'A','A', 'B',],
                   'points_for': ['18', '22', '19', '14', '14', '11', '20', '28'],
                   'points_against': ['aa','bb','aa','bb','aa','bb','aa','bb']})
df['points_for'] = df['points_for'].astype(int)

# 生成透视表并将求和结果除以2
df2 = pd.pivot_table(df, values='points_for', index='team', columns='points_against', aggfunc='sum') / 2
print(df2)

方法二:自定义聚合函数

直接在aggfunc中定义求和后除以2的逻辑:

import pandas as pd

df = pd.DataFrame({'team': ['A', 'B','B', 'B','A', 'A','A', 'B',],
                   'points_for': ['18', '22', '19', '14', '14', '11', '20', '28'],
                   'points_against': ['aa','bb','aa','bb','aa','bb','aa','bb']})
df['points_for'] = df['points_for'].astype(int)

# 自定义聚合函数:求和后除以2
def sum_then_divide_by_two(x):
    return x.sum() / 2

df2 = pd.pivot_table(df, values='points_for', index='team', columns='points_against', aggfunc=sum_then_divide_by_two)
print(df2)

两种方法最终都会得到目标结果:将透视表中每个聚合求和值除以2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:10:49