аватар question@mail.ru · 01.01.1970 03:00

Ошибка: pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 5, saw 9

Пытаюсь зугрузить tsv–файл в pandas.

import pandas as pddf = pd.read_csv(filename, sep='\t')print(df)

После выполнения этого кода в консоли вижу ошибку

df = pd.read_csv(filename, sep='\t') File ""/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas/io/parsers.py"", line 655, in parser_fretu _read(filepath_or_buffer, kwds) File ""/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas/io/parsers.py"", line 411, in _readdata = parser.read(nrows) File ""/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas/io/parsers.py"", line 982, in readret = self._engine.read(nrows) File ""/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas/io/parsers.py"", line 1719, in readdata = self._reader.read(nrows) File ""pandas/_libs/parsers.pyx"", line 890, in pandas._libs.parsers.TextReader.read (pandas/_libs/parsers.c:10862) File ""pandas/_libs/parsers.pyx"", line 912, in pandas._libs.parsers.TextReader._read_low_memory (pandas/_libs/parsers.c:11138) File ""pandas/_libs/parsers.pyx"", line 966, in pandas._libs.parsers.TextReader._read_rows (pandas/_libs/parsers.c:11884) File ""pandas/_libs/parsers.pyx"", line 953, in pandas._libs.parsers.TextReader._tokenize_rows (pandas/_libs/parsers.c:11755) File ""pandas/_libs/parsers.pyx"", line 2184, in pandas._libs.parsers.raise_parser_error (pandas/_libs/parsers.c:28765) pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 5, saw 9

Подскажите, в чем может быть проблема?

аватар answer@mail.ru · 01.01.1970 03:00

Скорее всего ошибка в том, что в файле данные разбиты не верно (например, перед данными идет заголовок). Когда pandas пытается разобрать файл, библиотеке надо понять сколько создавать столбцов, и если в первых строках количество элементов данных отличается от последующих, то будет возникать ошибка.

Я знаю про два решения.

  1. Игнорировать ошибку.

    pd.read_csv(filename, sep='\t', error_bad_lines=False)

    В этом случае таблица будет создана на основе первой строки и все, что не подойдет подойдет под ее формат будет опущено. Подойдет, если у вас идут данные с первой строки, но где–то в файле могут «слететь» данные.

  2. Пропустить заголовок

    pd.read_csv(filename, sep='\t', skiprows=N)

    В этом случае вы пропустите первые N строк файла, начав с N+1. Подходит для работы с файлами, в которых есть заголовки.

Последние

Похожие