朱莉娅(Julia):无法转换包含int和float的列的数据框包

时间:2018-09-23 21:04:00

标签: dataframe julia juno-ide

我是一个R感兴趣的Julia用户。我没有计算机科学背景。我只是尝试使用以下命令在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(似乎是Integer类型)和该行289是30.445(类型为float)。

DataFramesInt填充列并在看到Float时停止了问题吗?

非常感谢

1 个答案:

答案 0 :(得分:2)

问题在于浮动发生在数据集中为时已晚。默认情况下,CSV.jl使用等于rows_for_type_detect的{​​{1}}值。这意味着仅前100行用于确定输出中的列类型。将100中的rows_for_type_detect关键字参数设置为例如CSV.read,一切都应该正常工作。

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