使用Python合并csv文件

2024-10-16 17:24:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我开始学习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:\Users\user\Desktop\DUT1\test.py", line 26, in <module>
    produceOneCSV(list_of_files, file_out)
  File "C:\Users\user\Desktop\DUT1\test.py", line 12, in produceOneCSV
    result_obj = pdlib.concat([pdlib.read_csv(file) for file in list_of_files])
  File "C:\Python\Python385\lib\site-packages\pandas\core\reshape\concat.py", line 274, in concat
    op = _Concatenator(
  File "C:\Python\Python385\lib\site-packages\pandas\core\reshape\concat.py", line 331, in __init__
    raise ValueError("No objects to concatenate")
ValueError: No objects to concatenate

我不知道为什么它不起作用。 此外,我想从除第一个文件之外的所有文件中删除头


Tags: ofcsvtoinpylinefilesout
1条回答
网友
1楼 · 发布于 2024-10-16 17:24:00

我有一个类似的用例,为此我开发了这个代码块。您可以这样尝试:

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 file\n".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")

相关问题 更多 >