#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
функцией.