Ошибка: pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 5, saw 9
📁 python, python3, pandas
Пытаюсь зугрузить 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Подскажите, в чем может быть проблема?
Скорее всего ошибка в том, что в файле данные разбиты не верно (например, перед данными идет заголовок). Когда pandas пытается разобрать файл, библиотеке надо понять сколько создавать столбцов, и если в первых строках количество элементов данных отличается от последующих, то будет возникать ошибка.
Я знаю про два решения.
Игнорировать ошибку.
pd.read_csv(filename, sep='\t', error_bad_lines=False)В этом случае таблица будет создана на основе первой строки и все, что не подойдет подойдет под ее формат будет опущено. Подойдет, если у вас идут данные с первой строки, но где–то в файле могут «слететь» данные.
Пропустить заголовок
pd.read_csv(filename, sep='\t', skiprows=N)В этом случае вы пропустите первые
Nстрок файла, начав с N+1. Подходит для работы с файлами, в которых есть заголовки.
Войдите чтобы оставить ответ