Игнорировать строку во время чтения в файле .tsv в python - PullRequest
1 голос
/ 18 апреля 2019

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

ParserError : Ожидается 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'.

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

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

Выходные данные в кадре данных должны содержать 6 столбцов со строкой "\\t":

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

Ответы [ 2 ]

1 голос
/ 18 апреля 2019

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

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

0 голосов
/ 18 апреля 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...