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

Pandas read_csv如何强制指定列数据类型并将NaN替换为空值

报错原因

原生int类型在Pandas中不支持空值存储,当列中存在NaN时Pandas会自动将列类型推导为float64,强制转换为普通int就会触发你遇到的报错。Pandas 1.0及以上版本提供了可空整数类型(首字母大写的Int8/Int16/Int32/Int64),支持空值存储,完全符合你的需求。

解决方案

方案1:读取后手动转换

不要转成小写的int,直接转成可空Int64类型即可,空值会自动转为Pandas内置的pd.NA(等价于你需要的NULL效果,不会填充为0):

# 单列转换
df['min2'] = df['min2'].astype('Int64')
df['min3'] = df['min3'].astype('Int64')

方案2:读取CSV时直接指定类型,避免事后转换

调用read_csv时传入dtype参数,直接指定对应列的类型为可空整数,一步到位:

dtype_map = {
    "min2": "Int64",
    "min3": "Int64"
    # 其他需要指定类型的列也可以补充到这个字典里
}
df = pd.read_csv('test_data.csv', delimiter=',', index_col=False, dtype=dtype_map)

方案3:批量处理所有min开头的数值列

如果有大量规则命名的min列,可以批量匹配转换,不用逐个写列名:

import re
# 匹配所有min+数字格式的列名
min_cols = [col for col in df.columns if re.fullmatch(r'min\d+', col)]
df[min_cols] = df[min_cols].astype('Int64')

转换完成后可以用df.dtypes查看列类型,空值位置会显示为<NA>,不会转为0,也不会影响后续的数值计算逻辑。


内容的提问来源于stack exchange,提问作者WJ.Lesster

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:27:01