Джулия: пакетам Dataframes не удается преобразовать столбец, содержащий как int, так и float - PullRequest
0 голосов
/ 24 сентября 2018

Я - пользователь 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 Ответ

0 голосов
/ 24 сентября 2018

Проблема в том, что float происходит слишком поздно в наборе данных.По умолчанию CSV.jl использует значение rows_for_type_detect, равное 100.Это означает, что только первые 100 строк используются для определения типа столбца в выходных данных.Установите rows_for_type_detect параметр ключевого слова в CSV.read, например, 300, и все должно работать правильно.

В качестве альтернативы вы можете передать types ключевой аргумент, чтобы вручную установить тип столбца (в данном случае Float64 для этогоколонка будет уместна).

...