为何含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
相关产品推荐
相关产品推荐

