#python #pandas #csv #dataframe
#python #pandas #csv #фрейм данных
Вопрос:
Я пытаюсь прочитать в файле .tsv, однако я заметил, что в моих данных есть определенная строка, которая вызывает следующую ошибку:
Ошибка синтаксического анализа: ожидалось 112 полей в строке 112, увидел 115
Я отследил ошибку, обнаружив, что в моих данных есть "\t"
, которые при попытке чтения в файле считают, что они разделены табуляцией…
Я попробовал следующее, но безуспешно:
df = pd.read_csv('data.tsv.gz', header=None, sep='t',
quoting=csv.QUOTE_NONE, compression='gzip', engine='python',
encoding='iso8859_1')
Я также пытался использовать: sep='^\t|t'
.
Пример данных:
TheretShould \t Onlytbet6tcolumnstt
Вывод в dataframe должен выдавать 6 столбцов со строкой « \t
«:
|There|Should \t Only|be|6|columns|NA|
Комментарии:
1. Вы пытались добавить
escapechar='\'
в свойpd.read_csv()
список аргументов?2. такое простое решение, которое я упустил из виду! Большое спасибо, Йохан!
Ответ №1:
Вы можете добавить аргумент в pd.read_csv()
called escapechar. Setting the escape char to
‘», который решит вашу проблему. Таким образом
df = pd.read_csv('data.tsv.gz', header=None, sep='t', escapechar='\',
quoting=csv.QUOTE_NONE, compression='gzip', engine='python',
encoding='iso8859_1')
делает трюк, как вы показали в своем обновленном вопросе.
Ответ №2:
Если у вас нет значений null и вы можете смириться с чтением его как null, вы можете использовать аргумент na-values как часть read_csv и присвоить это значение как N / A.
Комментарии:
1. К сожалению, в данных присутствуют нулевые значения
2. Вы также можете попробовать установить false_values для установки этого значения в False при чтении.
3. @JohanL предоставил следующее решение:
escapechar='\'
, и оно работает как шарм.4. @Aslan: Пожалуйста, измените (или удалите) принятый вами ответ, поскольку он указывает на нерабочее решение. Это сбивает с толку тех, кто придет к этому вопросу позже. Я добавил рабочую строку в качестве ссылки.