Игнорировать строку при чтении файла .tsv в python

Я пытаюсь прочитать файл .tsv, однако заметил, что в моих данных есть определенная строка, которая вызывает следующую ошибку:

ParserError: Expected 112 fields in line 112, saw 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'.

Пример данных:

There\tShould \\t Only\tbe\t6\tcolumns\t\t

Вывод в фрейме данных должен производить 6 столбцов со строкой «\\t»:

|There|Should \\t Only|be|6|columns|NA|

Вы пытались добавить escapechar='\\' в свой список аргументов pd.read_csv()?

JohanL 18.04.2019 01:52

такое простое решение я проглядел! Большое спасибо Йохан!

Aslan 18.04.2019 01:58
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
165
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если у вас нет нулевых значений и вы можете жить с чтением его как нулевого, вы можете использовать аргумент na-values ​​как часть read_csv и назначить это значение как N/A.

К сожалению, в данных присутствуют нулевые значения

Aslan 18.04.2019 01:42

Вы также можете попробовать установить false_values, чтобы установить это значение в False при чтении.

RyanL 18.04.2019 01:58

@JohanL предоставил следующее решение: escapechar='\\', и оно работает как шарм.

Aslan 18.04.2019 02:03

@Aslan: Пожалуйста, измените (или удалите) принятый ответ, поскольку он указывает на неработающее решение. Это сбивает с толку того, кто придет к этому вопросу позже. Я добавил рабочий, как ссылку.

JohanL 18.04.2019 02:11
Ответ принят как подходящий

Вы можете добавить к pd.read_csv() аргумент под названием 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')

делает свое дело, как вы показали в своем обновленном вопросе.

Другие вопросы по теме