0

我是一个RJulia. 我没有计算机科学背景。我只是尝试Juno使用以下命令读取“csv”文件:

using CSV
using DataFrames

df = CSV.read(joinpath(Pkg.dir("DataFrames"), 
"path/to/database.csv"));

并收到以下错误消息

CSV.CSVError('error parsing a 'Int64' value on column 26, row 289; encountered '.'"
in read at CSV/src/Source.jl:294
in #read#29 at CSV/src/Source.jl:299
in stream! at DataStreams/src/DataStreams.jl:145
in stream!#5 at DataStreams/src/DataStreams.jl:151
in stream! at DataStreams/src/DataStreams.jl:187
in streamto! at DataStreams/src/DataStreams.jl:173
in streamfrom at CSV/src/Source.jl:195
in paresefield at CSV/src/paresefield.jl:107
in paresefield at CSV/src/paresefield.jl:127
in checknullend at CSV/src/paresefield.jl:56

我查看数据框中指示的条目:第 287 行、第 288 行分别是这样3033(似乎是 type Integer)和第 289 行是30.445(这是 type float)。

问题是DataFrames填充列Int并在看到 时停止Float

提前谢谢了

4

1 回答 1

2

问题是浮点数在数据集中发生得太晚了。默认情况下 CSV.jl 使用rows_for_type_detect等于 的值100。这意味着只有前 100 行用于确定输出中列的类型。将rows_for_type_detect关键字参数设置CSV.read为例如300,所有内容都应该正常工作。

或者,您可以传递types关键字参数来手动设置列类型(在这种情况下Float64,此列是合适的)。

于 2018-09-24T06:18:10.603 回答