Я пытаюсь запустить этот код, который удаляет ненужные столбцы из фрейма данных для последующей обработки. Он перебирает первые файлы, а затем дает ошибку ниже. До того, как он работал нормально. Я видел что-то об этом, возможно, являясь поврежденным файлом, поэтому я удалил все предыдущие файлы и снова начал создавать все файлы на шагах, но я все еще получаю ошибку. Извините, если он длинный, мне нужно показать каждый шаг для моей диссертации, а также я все еще очень начинающий программист. Может ли кто-нибудь помочь в устранении этой проблемы?
Код:
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'
,
Эта ошибка обычно возникает, когда файл, считанный с использованием 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)
df = pd.read_csv(path+file, engine='python')