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

pandas pivot_table处理decimal.Decimal类型仅返回两列问题排查

问题原因分析

这个问题是pandas 1.3.0版本的已知缺陷,和value列使用decimal.Decimal数据类型直接相关:

  • pandas的pivot_table方法默认使用mean作为聚合函数,1.3.0版本的内部数值类型校验逻辑存在BUG,无法正确识别decimal.Decimal这类非numpy原生的数值类型,会将这类值判定为无效数据直接过滤,最终导致透视后的apple、banana列全部为空,仅保留索引列。
  • 该缺陷在pandas 1.3.1版本更新中已经完成修复,官方优化了非原生数值类型的聚合适配逻辑,因此你升级到1.3.3版本后可以正常得到预期的透视结果。

如果临时无法升级pandas版本,可以用以下两种方法规避问题:

  1. 显式指定不需要做均值计算的聚合函数,如果你当前场景下每个date+id+type组合仅对应一条记录,可以指定aggfunc='first':
pivot_df = pd.pivot_table(df,
                          values='value',
                          index=['date', 'id'],
                          columns='type',
                          aggfunc='first').reset_index().rename_axis(None, axis=1)
  1. 提前将decimal.Decimal类型的value列转换为float/int等pandas原生支持的数值类型后再执行透视。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:36:04