@wowilon

Как склеить csv файлы?

Этот код (ниже) я нашел в интернете, переписал и поменял под свои файлы. Как бы я не старался (у меня маленький опыт с python) я не смог исправить его.
import os
import glob
import pandas as pd
os.chdir("C:\\Users\\Владелец\\PycharmProjects\\pythonProject\\eova")

extension = 'csv'
all_filenames = [i for i in glob.glob('*.{}'.format(extension))]

#combine all files in the list
combined_csv = pd.concat([pd.read_csv(f) for f in all_filenames ])
#export to csv
combined_csv.to_csv( "combined_csv.csv", index=False, encoding='utf-8-sig')

Возникает множество ошибок: "Traceback (most recent call last):
File "C:\Users\Владелец\PycharmProjects\pythonProject\eova\вава.py", line 10, in
combined_csv = pd.concat([pd.read_csv(f) for f in all_filenames ])
File "C:\Users\Владелец\PycharmProjects\pythonProject\eova\вава.py", line 10, in
combined_csv = pd.concat([pd.read_csv(f) for f in all_filenames ])
File "C:\Users\Владелец\PycharmProjects\pythonProject\venv\lib\site-packages\pandas\io\parsers.py", line 610, in read_csv
return _read(filepath_or_buffer, kwds)
File "C:\Users\Владелец\PycharmProjects\pythonProject\venv\lib\site-packages\pandas\io\parsers.py", line 468, in _read
return parser.read(nrows)
File "C:\Users\Владелец\PycharmProjects\pythonProject\venv\lib\site-packages\pandas\io\parsers.py", line 1057, in read
index, columns, col_dict = self._engine.read(nrows)
File "C:\Users\Владелец\PycharmProjects\pythonProject\venv\lib\site-packages\pandas\io\parsers.py", line 2061, in read
data = self._reader.read(nrows)
File "pandas\_libs\parsers.pyx", line 756, in pandas._libs.parsers.TextReader.read
File "pandas\_libs\parsers.pyx", line 771, in pandas._libs.parsers.TextReader._read_low_memory
File "pandas\_libs\parsers.pyx", line 827, in pandas._libs.parsers.TextReader._read_rows
File "pandas\_libs\parsers.pyx", line 814, in pandas._libs.parsers.TextReader._tokenize_rows
File "pandas\_libs\parsers.pyx", line 1951, in pandas._libs.parsers.raise_parser_error
pandas.errors.ParserError: Error tokenizing data. C error: Expected 2 fields in line 32, saw 3
"
Как их можно исправить при этом не задев суть кода?
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 1
@o5a
wowilon, чтобы этот код работал, файлы должны быть однотипные, с одинаковым количеством столбцов. В коде ошибки он как раз и указывает, что в одних файлах 2 столбца, в других 3.
Если уверены, что файлы одинаковой структуры, можете проверить соответствие разделителя столбцов. В библиотеках для работы csv и pandas в том числе по умолчанию используется запятая, в то время как в русской локали по умолчанию используется точка с запятой. Если в ваших csv точка с запятой, то надо явно указать в параметре:
combined_csv = pd.concat([pd.read_csv(f, sep=";") for f in all_filenames ])
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы