#python #pandas #dataframe #csv
Пытаюсь зугрузить tsv–файл в pandas. import pandas as pd df = 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_f return _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 _read data = parser.read(nrows) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas/io/parsers.py", line 982, in read ret = self._engine.read(nrows) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pandas/io/parsers.py", line 1719, in read data = 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 Подскажите, в чем может быть проблема?
Ответы
Ответ 1
Обычно эта ошибка говорит о том, что CSV/TSV файл "поломан", т.е. не является корректным CSV/TSV файлом. Иногда это случается, когда некоторые программы пишут в заголовок CSV/TSV файла техническую информацию или описание. В этом случае часто используют символ комментирования, например # в начале строки. Pandas умеет игнорировать закомментированные строки: pd.read_csv(filename, sep='\t', comment='#')Ответ 2
Скорее всего ошибка в том, что в файле данные разбиты не верно (например, перед данными идет заголовок). Когда pandas пытается разобрать файл, библиотеке надо понять сколько создавать столбцов, и если в первых строках количество элементов данных отличается от последующих, то будет возникать ошибка. Я знаю про два решения. Игнорировать ошибку. pd.read_csv(filename, sep='\t', error_bad_lines=False) В этом случае таблица будет создана на основе первой строки и все, что не подойдет подойдет под ее формат будет опущено. Подойдет, если у вас идут данные с первой строки, но где–то в файле могут «слететь» данные. Пропустить заголовок pd.read_csv(filename, sep='\t', skiprows=N) В этом случае вы пропустите первые N строк файла, начав с N+1. Подходит для работы с файлами, в которых есть заголовки.
Комментариев нет:
Отправить комментарий