【发布时间】:2016-05-30 21:38:49
【问题描述】:
我正在使用 pandas.read_csv 读取一系列 .csv 文件。从一堆列中,我只读取了 2 个(第 2 列和第 15 列)。
datafiles = glob.glob(mypath)
for dfile in datafiles:
data = pd.read_csv(dfile,header=6,usecols=['Reading','Value'])
CSV 看起来像 this,顶部有几行标题。每隔一段时间,pandas 就会将这些数字中的一个读取为 NaN。 Excel 可以毫无问题地读取这些值,并且目视检查文件我看不出是什么导致了问题。特别是在这种情况下,此文件中索引为 265 的行,数据框中索引为 263 的行,“值”列在应该为 ~27.4 时读取 NaN。
>>>data['Value'][264]
nan
这个问题是一致的,不会随着我阅读的文件数量而改变。在许多文件中,不存在此问题。在其余的情况下,它只会在任一列中读取一个随机数作为 NaN。我尝试使用 dtype 从自动 float64 更改为 np.float128,但这并不能解决问题。有关如何解决此问题的任何想法?
更新:grep 搜索显示换行符是 \M,只有 4 个例外——每个文件开头的行位于标题之前。进一步检查,这个特定点 [264] 在失败文件中的处理方式不同:在 5/12 文件中,这很好。在 2/12 文件中读取为 27.0,在 3/12 中读取为 nan,在 2/12 文件中读取为 2.0。其中一个文件(读取 27.0 的文件)可用于download here
【问题讨论】:
-
文件是否可能在某些行上有不同的换行符?文件是 UTF-8-BOM 格式吗?尝试使用 notepad++ 将其切换为 UTF-8
-
你能上传一个有问题的 CSV 文件吗?
-
@CharlieHaley 检查更新。谢谢!
标签: python python-2.7 csv pandas nan