代码之家  ›  专栏  ›  技术社区  ›  Shuvayan Das

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

  •  -1
  • Shuvayan Das  · 技术社区  · 6 年前

    我有几个文件夹-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
    

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

    目前我手动将每个csv的内容粘贴到excel工作表中并创建报告,但我需要实现自动化。

    有人能帮我吗?

    文件夹结构如下所示:

    enter image description here

    操作完成后,excel工作表显示如下:

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  1
  •   Mayank Porwal    6 年前

    你可以这样做:

    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
    

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

    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() 熊猫的功能。

    如果这有帮助,请告诉我。