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

Python Pandas问题:透视表意外输出浮点型数据

嘿,这个问题我太熟了!整数型的DataFrame做完透视表变浮点,大概率是俩原因,我给你拆解清楚:

最可能的两个诱因

  1. 没指定聚合函数,默认用了均值(mean)
    pandas的pivot_table默认聚合逻辑是计算均值,哪怕原始数据全是整数,均值结果自然会变成浮点型——毕竟均值不一定是整数嘛。看你的数据是Total计数类字段,显然应该用求和而非均值。

  2. 透视后出现了缺失值(NaN)
    如果某些Year和Type的组合在原始数据里不存在,透视表会自动用NaN填充这些空白位置。而pandas的整数类型无法存储NaN,所以它会自动把整个列转成float64类型来兼容。

对应的解决办法

办法1:指定正确的聚合函数(优先推荐)

既然是计数数据,直接把聚合函数设为sum,这样结果会保持整数(无缺失值的前提下):

dfDisB = pd.pivot_table(dfDis, index=['Year'], columns=['Type'], values=['Total'], aggfunc='sum')

办法2:填充缺失值+指定聚合

如果确实存在缺失的Year-Type组合,加上fill_value=0把空值填成0,同时用sum聚合,最终结果就是整数类型:

dfDisB = pd.pivot_table(dfDis, index=['Year'], columns=['Type'], values=['Total'], aggfunc='sum', fill_value=0)

办法3:转换已生成的透视表

要是你已经得到了浮点型的透视表,也可以事后处理:先把NaN填充成0,再转成整数类型:

dfDisB = dfDisB.fillna(0).astype(int)

你可以先检查下自己的透视表代码有没有指定aggfunc,或者看看结果里有没有NaN,对应上面的办法就能解决啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:44:13