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

为何含NaN值的整数Series/DataFrame列数据类型为float64?

解决Pandas中含NaN的整数列变为float64的问题

问题本质

Python原生int类型不支持NaN值,早期Pandas只能用float64类型来同时存储整数和NaN,这就导致原本的整数被转成带.0的浮点数,dtype显示为float64。现在Pandas提供了Nullable Integer类型(大写Int64),可以完美解决这个矛盾。

解决方法

1. 读取CSV时直接指定类型

读取文件时,给目标列指定Int64 dtype,从根源避免类型转换:

import pandas as pd
df = pd.read_csv('your_file.csv', dtype={'target_column': 'Int64'})

2. 转换已加载的float64列

如果数据已经加载完成,可将目标列转换为Nullable Integer类型:

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

效果验证

转换后:

  • 列的dtype会显示为Int64(而非float64)
  • 整数数值不会带有.0后缀
  • NaN值可以正常保留

注意:Nullable Integer类型要求Pandas版本 >= 0.24.0,目前主流版本均已支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 09:42:32