python - 将多个 csv 文件合并为一个 csv 文件

标签 python csv concatenation export-to-csv

我正在尝试将多个 csv 文件合并为一个,并尝试了多种方法,但我很挣扎。

我从多个csv文件导入数据,当我将它们一起编译成一个csv文件时,似乎前几行填充得很好,但随后它开始在行之间随机输入可变数量的空格,它永远不会完成填写组合的 csv 文件,它似乎只是不断地添加信息,这对我来说没有意义,因为我正在尝试编译有限数量的数据。

我已经尝试为文件编写关闭语句,但仍然得到相同的结果,我指定的组合 csv 文件永远不会停止获取数据,并且它将在整个文件中随机间隔数据 - 我只想要一个正常编译的 csv 。

我的代码有错误吗?有什么解释可以解释为什么我的 csv 文件会这样吗?

csv_file_list = glob.glob(Dir + '/*.csv') #returns the file list
print (csv_file_list)
with open(Avg_Dir + '.csv','w') as f:
    wf = csv.writer(f, delimiter = ',')
    print (f)
    for files in csv_file_list:
        rd = csv.reader(open(files,'r'),delimiter = ',')
        for row in rd:
            print (row)
            wf.writerow(row)

最佳答案

你的代码对我有用。

或者,您可以按如下方式合并文件:

csv_file_list = glob.glob(Dir + '/*.csv')
with open(Avg_Dir + '.csv','w') as wf:
    for file in csv_file_list:
        with open(file) as rf:
            for line in rf:
                if line.strip(): # if line is not empty
                    if not line.endswith("\n"):
                        line+="\n"
                    wf.write(line)

或者,如果文件不太大,您可以一次读取每个文件。但在这种情况下,所有空行和标题都将被复制:

csv_file_list = glob.glob(Dir + '/*.csv')
with open(Avg_Dir + '.csv','w') as wf:
    for file in csv_file_list:
        with open(file) as rf:
            wf.write(rf.read().strip()+"\n")

关于python - 将多个 csv 文件合并为一个 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56294461/

相关文章:

python - 仅使用特定 Csv 列的 KMeans 聚类

MySQL:变量=变量+select语句

Python sklearn RandomForestClassifier 不可重现的结果

Python ctypes 位域 : get bitfield location

python - 如何打印 float 而不在 python 中进行任何截断?

php - 在文件 csv 中导入到表 mysql 中,对于新行,更好地使用\n ,\r 或\r\n?

python - 这对缓冲区操作更有效 : python strings or array()

java - 无法上传用于 WEKA 分析的 CSV 文件 - java

python - 在 pandas 中转换、切片和连接列

excel - Excel中有没有一种方法可以获取一列并将其转换为连接字符串