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

#julia

#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)
  

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

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

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

Комментарии:

1. Я не знаю Queryverse достаточно, чтобы диагностировать точные проблемы, но я могу предложить вам попробовать использовать CSV.jl для чтения CSV-файлов — может быть, тогда проблема будет просто решена? (в частности, в CSV.jl у вас нет row_estimate и type_detect_rows kwargs, поскольку это обрабатывается пакетами автоматически без подсказки)

2. В сообщении об ошибке говорится, что он пытается преобразовать строку в a UInt8 . Я предполагаю, что у вас есть столбец, первые 2000 строк которого являются UINT8, но позже используются другие символы и, следовательно, сначала анализируются как строка.

3. Вот почему я предлагаю использовать CSV.jl, который не имеет таких проблем, поскольку он выполняет автоматическое определение типа, всегда учитывая все строки, которые считываются.

Ответ №1:

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

Так что это должно быть:

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

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

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