Проблемы с загрузкой файла CSV в Julia

Я пытаюсь использовать Queryverse для загрузки файла csv, вот так

using Queryverse

df = load("my_file.csv"
        , delim = ";"
        , row_estimate = 215_000
        , type_detect_rows = 2_000) |> 
    DataFrame

но я получаю следующую ошибку:

MethodError: no method matching UInt8(::String)

Извините, я не могу поделиться примером файла.

Сообщение об ошибке не очень информативно. Я предполагаю, что может быть какая-то проблема с определением типа строк - поэтому я играл с параметрами функции, но, похоже, это не сработало.

Кто-нибудь может помочь?


person Georgery    schedule 19.10.2020    source источник
comment
Я недостаточно знаю Queryverse, чтобы диагностировать точные проблемы, но могу предложить вам попробовать использовать CSV.jl для чтения CSV-файлов - может тогда проблема просто решится? (в частности, в CSV.jl у вас нет row_estimate и type_detect_rows kwargs, так как это обрабатывается пакетами автоматически без подсказки)   -  person Bogumił Kamiński    schedule 19.10.2020
comment
В сообщении об ошибке говорится, что он пытается преобразовать строку в UInt8. Я предполагаю, что у вас есть столбец, первые 2000 строк которого все UInt8, но позже используют другие символы и, таким образом, сначала анализируются как строка.   -  person mbauman    schedule 19.10.2020
comment
Вот почему я предлагаю использовать CSV.jl, у которого нет таких проблем, поскольку он автоматически определяет тип, всегда рассматривая все считываемые строки.   -  person Bogumił Kamiński    schedule 19.10.2020


Ответы (1)


Проблема с вашим кодом заключается в том, что параметр delim должен быть Char, а не String.

Итак, это должно быть:

df = load("my_file.csv"
        , delim = ';'
        , row_estimate = 215_000
        , type_detect_rows = 2_000) |> 
    DataFrame

Полученная вами ошибка связана с обработкой параметра разделителя, а не данных в вашем файле!

Тем не менее, обычно рекомендуется использовать CSV.jl для чтения CSV-файлов, а не CSVFiles.jl, который используется функцией Queryverse.load.

person Przemyslaw Szufel    schedule 19.10.2020