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

Pandas dataframe含NaN的category字段float转int代码无效如何解决

问题原因
  • 核心原因是pandas默认的int类型不支持缺失值NaN,只要列中存在NaN,pandas会自动将整列的数据类型强制转换为float64,哪怕你单独把非NaN的数值转成int,赋值回列的时候也会被重新转为float,所以看起来代码没有生效。
  • 额外补充小问题:np.isnan仅支持判断数值类型,如果你的列后续引入非数值类型值会直接报错,不过这不是本次代码不生效的原因。
解决方法

分两种场景选择方案即可:

场景1:需要保留原有的NaN值

使用pandas提供的可空整数类型Int64(注意首字母大写,区别于普通int),该类型支持同时存储整数和缺失值,不需要用apply遍历,直接调用astype即可,性能更高:

df['category'] = df['category'].astype('Int64')

场景2:可以把NaN替换为自定义的整数占位值

如果你不需要保留NaN,可以先填充缺失值为符合业务逻辑的指定整数(比如-1、0等),再直接转为普通int类型即可:

# 示例用-1作为NaN的占位值,可根据需求修改
df['category'] = df['category'].fillna(-1).astype(int)

内容的提问来源于stack exchange,提问作者gülsemin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:36:03