下午好,
我有一个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)
谢谢!
答案 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()