将来自不同子文件夹的具有相同名称的csv文件合并到一个csv

时间:2019-04-06 12:58:35

标签: python pandas dataframe glob data-analysis

我有三个CSV文件,每个文件都有多个文件的特定文件名。假设总共有20个文件名,所以在三个不同的文件夹中总共有20 * 3csv文件。

  

文件夹A- 1001.CSV,1002.CSV,1003.CSV ...
  文件夹B-1001.CSV,1002.CSV,1003.CSV
  文件夹C-1001.csv,1002.csv,1003.csv ......

我想为每个1001,1002,1003,1004 .....获得一个CSV文件。 总共20个csv文件

我该怎么做?由于文件位于不同的文件夹中,因此glob无法正常工作(或者我不知道如何操作)

1 个答案:

答案 0 :(得分:0)

我做了以下假设:

  • 所有子文件夹都将植根于某个已知目录“ parentdir”
  • 每个子文件夹仅包含相关的csv文件
  • csv文件不包含任何页眉/页脚行
  • csv文件中的每个记录都用换行符
  • 分隔
  • 每个文件中的所有记录都是相关的

这将在每个子文件夹中生成一个“ concat.csv”文件,并包含同一文件夹中所有其他文件的内容。我使用了this other answer on stackoverflow中的一段代码来实际连接文件。

import os
import fileinput

rootdir = 'C:\\Users\\myname\\Desktop\\parentdir'
os.chdir(rootdir)
children = os.listdir()
for i in children:
    path = os.path.join(rootdir, i)
    os.chdir(path)
    filenames = os.listdir()
    with open('concat.csv', 'w') as fout, fileinput.input(filenames) as fin:
        for line in fin:
            fout.write(line + '\n')