Джулия: пакетам Dataframes не удается преобразовать столбец, содержащий как int, так и float
Я R
пользователь с большим интересом к Julia
, У меня нет опыта работы в информатике. Я просто попытался прочитать файл "CSV" в Juno
с помощью следующей команды:
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, как это 30
, 33
соответственно (похоже, типа Integer
) и строка 289 30.445
(который имеет тип float
).
Это проблема, которая DataFrames
заполнение столбца Int
и остановился, когда увидел Float
?
Спасибо заранее
1 ответ
Проблема в том, что float происходит слишком поздно в наборе данных. По умолчанию CSV.jl использует rows_for_type_detect
значение равно 100
, Это означает, что только первые 100 строк используются для определения типа столбца в выходных данных. Задавать rows_for_type_detect
параметр ключевого слова в CSV.read
например 300
и все должно работать правильно.
В качестве альтернативы вы можете пройти types
Аргумент ключевого слова, чтобы вручную установить тип столбца (в этом случае Float64
для этого столбца будет уместно).