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

使用pandas的read_csv读取CSV文件时出现源文件不存在的浮点值如何解决

你遇到的问题是pandas读取无表头CSV的默认规则、自动类型推断逻辑,再加上CSV生成过程的小问题共同导致的,具体原因和解决方法如下:

  • 核心原因1:无表头CSV读取逻辑问题
    pandas默认会把CSV的第一行识别为列名,如果你生成的CSV没有专门写表头、所有行都是数据,那么读取时第一行数据会被当成列名,pandas会自动生成0开始的数值索引作为数据行的标识,同时如果行数据存在错位、空值,就会出现你看到的额外浮点值。
    解决方案:读取时指定header=None参数,告知pandas该CSV没有表头,所有行都是数据:
import pandas as pd
df = pd.read_csv("custom-data.csv", header=None)
  • 核心原因2:pandas自动类型推断导致整数转浮点
    pandas的默认int类型不支持空值(NaN),如果CSV中存在空值、空行、行尾多余逗号生成的空字段,pandas会把整列的数据类型向上推导为float,原本的整数值会变成带.0的浮点数,空值会变成NaN浮点值。
    解决方案1:读取时指定使用支持空值的整数类型Int64,避免自动转浮点:
df = pd.read_csv("custom-data.csv", header=None, dtype="Int64")

解决方案2:如果你的数据是固定列数(比如手写数字识别常用的784列像素值),读取时指定列数,忽略多余的空列:

# 784可以替换为你实际的列数
df = pd.read_csv("custom-data.csv", header=None, dtype="Int64", usecols=range(784))

解决方案3:如果已经读入了数据,可以直接删除全为空的列:

df = df.dropna(axis=1, how="all")
  • 核心原因3:CSV生成代码的可优化点
    你当前的CSV生成代码有两个小问题可能会导致异常:
  1. 使用with语句打开文件时,会在代码块执行结束后自动关闭文件,不需要手动调用close()方法,重复关闭可能会引发意料之外的IO问题
  2. 如果preprocessed_digits[0][0]是numpy数组,直接传入writerow可能会因为numpy的数值类型特性引发写入异常,建议先转成普通Python列表再写入
    优化后的写入代码示例:
from csv import writer

# 先将numpy数组转为普通int列表
write_row = preprocessed_digits[0][0].tolist()
with open('/content/drive/My Drive/Colab Notebooks/digit-recognition/custom-data.csv', 'a') as f_object:
    writer_object = writer(f_object)
    writer_object.writerow(write_row)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:45:03