Объединение CSV-файлов из разных папок в лист Excel с использованием Python - PullRequest
0 голосов
/ 30 октября 2018

У меня есть несколько папок - 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 с использованием python? В настоящее время я вручную вставляю содержимое каждого csv в лист Excel и создаю отчет, но мне нужно автоматизировать это.

Сомоне, пожалуйста, помогите мне с этим?

Структура папок выглядит следующим образом:

enter image description here

А лист Excel после операции должен выглядеть следующим образом:

enter image description here

1 Ответ

0 голосов
/ 30 октября 2018

Вы можете сделать что-то вроде этого:

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.

Теперь вы можете записать это в excel, используя функцию to_excel() панд.

Примечание: вам, возможно, придется немного поиграть с вашими фреймами данных, чтобы они правильно соединялись.

Дайте мне знать, если это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...