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

为什么pandas创建pivot_table数据透视表时decimal类型无法正常工作?

问题原因

  • pandas.pivot_table默认使用numpy.mean作为聚合函数,而numpy.mean不支持Python标准库的decimal.Decimal类型,计算时会直接跳过该列。
  • Decimal类型存入DataFrame时,列的dtype会被识别为object类型,pivot_table默认筛选数值类型列作为计算值的规则也会跳过该列,即便手动指定values='C',因为默认聚合函数无法处理该类型,最终返回无有效列的空DataFrame。

解决方案

手动指定支持Decimal类型的聚合函数即可,示例如下:

import pandas
import decimal

b = pandas.DataFrame({
    'A': ['a', 'b', 'a'],
    'B': ['one', 'two', 'three'],
    'C': [decimal.Decimal('22.3'), decimal.Decimal('34.0'), decimal.Decimal('12.3')]
})

# 指定aggfunc为可处理Decimal类型的函数,比如sum、len或者自定义聚合函数
res = pandas.pivot_table(b, values='C', index='A', columns='B', aggfunc=sum)
print(res)

运行后输出结果和使用float类型的示例一致:

B   one three   two
A                  
a  22.3  12.3   NaN
b   NaN   NaN  34.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:30:01