在包含许多包含CSV的子文件夹的目录中多次批量运行Pandas Concat脚本

时间:2019-06-03 18:10:13

标签: python pandas

下午好,

我有一个python pandas concat脚本,该脚本将2个CSV水平合并到一个“ master.csv”中,并重命名合并的master.csv中的CSV头之一。我目前有一个目录,其中包含100个子文件夹,每个子文件夹中都有两个CSV(所有csv都具有相同的文件名:csv1,csv2)。我想在主目录中的每个子文件夹上批量运行pandas concat脚本。我以为我需要某种循环,但对python和pandas仍然没有经验。任何帮助将不胜感激!

以下脚本:

import pandas as pd

a = pd.read_csv("csv1.csv")
b = pd.read_csv("csv2.csv")

b.rename(index=str, columns={'month' : 'month - 2018','year' : 'year - 2018', inplace=True)

b = b.reset_index(drop=True)

merged = pd.concat([a,b], axis=1, sort=False)

merged.to_csv("Master.csv", index=False)

谢谢!

1 个答案:

答案 0 :(得分:0)

感谢MattR推荐os.walk()。我能够在每个子目录中成功运行脚本。每次运行脚本时,我都必须更改工作目录,然后移至下一个子目录。下面的代码:

import pandas as pd
import os

def Merge_CSVs():

rootdir = "/mypath"

directories = [os.path.abspath(x[0]) for x in os.walk(rootdir)]
directories.remove(os.path.abspath(rootdir))

for i in directories:
    os.chdir(i)
    Merge_CSVs()