ParserError: Ошибка токенизации данных C ошибка

1

Я пытаюсь запустить этот код, который удаляет ненужные столбцы из фрейма данных для последующей обработки. Он перебирает первые файлы, а затем дает ошибку ниже. До того, как он работал нормально. Я видел что-то об этом, возможно, являясь поврежденным файлом, поэтому я удалил все предыдущие файлы и снова начал создавать все файлы на шагах, но я все еще получаю ошибку. Извините, если он длинный, мне нужно показать каждый шаг для моей диссертации, а также я все еще очень начинающий программист. Может ли кто-нибудь помочь в устранении этой проблемы?

Код:

import pandas as pd
import os

path = ('./Sketch_grammar/weighted/')
files = os.listdir(path)
for file in files:
    df = pd.read_csv(path+file)
    df = df.drop('Hits', axis=1)
    df = df.drop('Score', axis=1)
    df = df.drop('Score.1', axis=1)
    print(df)
    filename = os.path.splitext(file)
    (f, ext) = filename
    print(f)
    df.to_csv(path+'weighted_out/'+f+'_out.csv', index=False)

Сообщение об ошибке выглядит следующим образом:

Traceback (most recent call last):
  File "/home/sandra/git/trees/trees/remove_columns.py", line 9, in <module>
    df = pd.read_csv(path+file)
  File "/home/sandra/miniconda3/lib/python3.6/site-packages/pandas/io/parsers.py", line 678, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "/home/sandra/miniconda3/lib/python3.6/site-packages/pandas/io/parsers.py", line 440, in _read
    parser = TextFileReader(filepath_or_buffer, **kwds)
  File "/home/sandra/miniconda3/lib/python3.6/site-packages/pandas/io/parsers.py", line 787, in __init__
    self._make_engine(self.engine)
  File "/home/sandra/miniconda3/lib/python3.6/site-packages/pandas/io/parsers.py", line 1014, in _make_engine
    self._engine = CParserWrapper(self.f, **self.options)
  File "/home/sandra/miniconda3/lib/python3.6/site-packages/pandas/io/parsers.py", line 1708, in __init__
    self._reader = parsers.TextReader(src, **kwds)
  File "pandas/_libs/parsers.pyx", line 539, in pandas._libs.parsers.TextReader.__cinit__
  File "pandas/_libs/parsers.pyx", line 737, in pandas._libs.parsers.TextReader._get_header
  File "pandas/_libs/parsers.pyx", line 932, in pandas._libs.parsers.TextReader._tokenize_rows
  File "pandas/_libs/parsers.pyx", line 2112, in pandas._libs.parsers.raise_parser_error
pandas.errors.ParserError: Error tokenizing data. C error: Calling read(nbytes) on source failed. Try engine='python'

,

  • 1
    Вы пытались сделать то, что предлагает ошибка? df = pd.read_csv(path+file, engine='python')
  • 0
    У вас есть файлы в папке, которые не являются CSV?
Показать ещё 3 комментария
Теги:
pandas
python-2.7

1 ответ

1
Лучший ответ

Эта ошибка обычно возникает, когда файл, считанный с использованием pandas, либо поврежден, либо нет в читаемом состоянии. Изменение кода, как показано ниже, должно работать:

import pandas as pd
import os

path = ('./Sketch_grammar/weighted/')
files = os.listdir(path)
for file in files:
    if file.endswith('.csv'):
        df = pd.read_csv(path+file)
        df = df.drop('Hits', axis=1)
        df = df.drop('Score', axis=1)
        df = df.drop('Score.1', axis=1)
        filename = os.path.splitext(file)
        (f, ext) = filename
        df.to_csv(path+'weighted_out/'+f+'_out.csv', index=False)
  • 0
    Спасибо! Это сработало! Таким образом, в основном, если это дает, и вы знаете, что файлы в порядке, это потому, что Python не распознает, какой тип файла они?
  • 1
    Если вы знаете, что файл не поврежден и в текстовом файле используется разделитель, то есть запятая, вкладка и т. Д., Тогда проблем быть не должно. Дело не в том, что python не распознает тип файла, а в том, что функция read_csv не может автоматически найти разделитель. Читать
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню