使用python将不同文件夹中的csv合并到Excel工作表中

时间:2018-10-30 11:44:13

标签: python excel pandas automation

我有几个文件夹-3个包含类似csv(相同名称)的文件夹。 这些csv捕获每个数据周期和搅动周期组合的因变量相关性,如下所示:

Data Period     Jan'18      
Churn Period    Feb'18      

Variable_Name       correlation 
Pending_Disconnect  0.553395448 
status_Active       0.539464806 
days_active         0.414774231 
days_pend_disco     0.392915837 
prop_tenure         0.074321692 
abs_change_3m       0.062267386 

因此,从3个文件夹中,将3个不同的具有相同名称的csv内容整理到工作簿中,如下所示:

Data Period         Jan'18              Data Period     Jan'18              Data Period     Jan'18      
Churn Period        Feb'18              Churn Period    Mar'18              Churn Period    Apr'18      

Variable_Name       correlation         Variable_Name   correlation         Variable_Name   correlation
Pending_Disconnect  0.553395448         Pending_Change  0.043461995         active_frq_N    0.025697016
status_Active       0.539464806         status_Active   0.038057697         active_frq_Y    0.025697016
days_active         0.414774231         ethnic          0.037503202         ethnic          0.025195149
days_pend_disco     0.392915837         days_active     0.037227245         ecgroup         0.023192408
prop_tenure         0.074321692         archetype_grp   0.035761434         age             0.023121305
abs_change_3m       0.062267386         age_nan         0.035761434         archetype_nan   0.023121305

目标是比较相关性如何逐月变化。

如何使用python从不同的文件夹中提取csv并将其整理到excel的工作簿中? 目前,我手动将每个csv的内容粘贴到excel工作表中并创建报告,但是我需要使它自动化。

请问有人可以帮我吗?

文件夹结构如下:

enter image description here

操作后,excel工作表应如下所示:

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

import glob
rootdir = '/home/my/folders'  ## Give the path before folders 1 Jan-Feb,2Jan-Mar, etc.. )

f = list()
for subdir, dirs, files in os.walk(rootdir):
    for d in dirs:                                        
        f.append(glob.glob(rootdir + '/' + d + '/*.csv'))

f = list(filter(None, f)) # Removes empty elements from the list
# f contains csv files from all folders

现在,为列表f中的所有csv创建数据框

dfs = [pd.read_csv(file) for file in f[0]]  # f[0] because f is a list of lists
df = pd.concat(dfs)

这已将您所有的数据帧合并到一个df中。

现在,您可以使用to_excel()熊猫函数将其写入excel。

注意:您可能需要对数据框进行一些调整才能使其正确连接。

让我知道这是否有帮助。