#python #csv
#python #csv
Вопрос:
Я начинаю изучать Python и хотел бы объединить CSV-файлы. Я нашел следующий код :
from os import chdir
from glob import glob
import pandas as pdlib
# Produce a single CSV after combining all files
def produceOneCSV(list_of_files, file_out):
# Consolidate all CSV files into one object
result_obj = pdlib.concat([pdlib.read_csv(file) for file in list_of_files])
# Convert the above object into a csv file and export
result_obj.to_csv(file_out, index=False, encoding="utf-8")
# Move to the path that holds our CSV files
csv_file_path = 'c:/Users/user/Desktop/DUT1'
chdir(csv_file_path)
# List all CSV files in the working dir
file_pattern = ".csv"
list_of_files = [file for file in glob('*.{}'.format(file_pattern))]
print(list_of_files)
file_out = "ConsolidateOutput.csv"
produceOneCSV(list_of_files, file_out)
Но я получаю эти ошибки, когда пытаюсь его скомпилировать :
Traceback (most recent call last):
File "C:UsersuserDesktopDUT1test.py", line 26, in <module>
produceOneCSV(list_of_files, file_out)
File "C:UsersuserDesktopDUT1test.py", line 12, in produceOneCSV
result_obj = pdlib.concat([pdlib.read_csv(file) for file in list_of_files])
File "C:PythonPython385libsite-packagespandascorereshapeconcat.py", line 274, in concat
op = _Concatenator(
File "C:PythonPython385libsite-packagespandascorereshapeconcat.py", line 331, in __init__
raise ValueError("No objects to concatenate")
ValueError: No objects to concatenate
Я не знаю, почему это не работает.
Кроме того, я хотел бы удалить заголовки из всех файлов, кроме первого.
Ответ №1:
У меня был аналогичный вариант использования, для которого я разработал этот фрагмент кода. Вы можете попробовать это следующим образом:
import pandas as pd
from glob import glob
import os
def joinCsvFiles(outFile, dirPath, filePattern="*.csv"):
dfs = []
globPattern = os.path.join(dirPath, filePattern)
fileParts = glob(globPattern)
for filePart in fileParts:
df = pd.read_csv(filePart, index_col=False, header=0)
dfs.append(df)
print("[!]. Merging {} part files to create a consolidated filen".format(len(dfs)))
try:
finalDf = pd.concat(dfs, sort=False)
finalDf.to_csv(outFile, index=False)
print ("[>]. Consolidated csv file generated successfully at filepath: '{}'n".format(outFile))
except Exception as e:
raise e
if __name__ == '__main__':
joinCsvFiles("finalReport.csv", "c:/Users/user/Desktop/DUT1", "*.csv")
Комментарии:
1. Спасибо тебе за помощь, Захид. Я пробовал ваш код, но все еще получаю ошибки о pandasioparsers.py и pandas_libsparsers.pyx. Я забыл упомянуть, что мои файлы CSV имеют заголовки, а некоторые строки имеют больше столбцов, чем другие