Объединение нескольких файлов xlsx в один лист - PullRequest
0 голосов
/ 07 января 2019

В настоящее время я пытаюсь объединить несколько файлов Excel в один с помощью Python. То, что я до сих пор, выглядит следующим образом:

sharedDocs = "C:\\SPSharedDocuments\\*.xlsx"
invoices = "C:\\SPInvoices\\*.xlsx"
formsCerts = "C:\\SPForms&Certificates\\*.xlsx"
mgmt = "C:\\SPManagement\\*.xlsx"

files = [sharedDocs, invoices, formsCerts, mgmt]

for docs in files:
    excel = []
    for file in glob.glob(docs):
        excel.append(file)

    excels = [pd.ExcelFile(name) for name in excel]
    frames = [x.parse(x.sheet_names[0], header=None, index_col=None) for x in excels]
    frames_new = [df[1:] for df in frames[1:]]
    combined = pd.concat(frames_new)

    if sharedDocs == docs:
        combined.to_excel("SharedDocsMerged.xlsx", header = False, index = False)
    elif invoices == docs:
        combined.to_excel("InvoicesMerged.xlsx", header = False, index = False)
    elif formsCerts == docs:
        combined.to_excel("FormsCertsMerged.xlsx", header = False, index = False)
    else:
        combined.to_excel("MGMTMerged.xlsx", header = False, index = False)

Это работает, но не копирует первый заголовок, так что я знаю, как называется каждый столбец. Раньше у меня была строка, которая читала frames_new = [df[1:] for df in frames[1:]] как frames[1:] = [df[1:] for df in frames[1:]], но это вызывало несколько копий одного и того же файла.

Все, что мне нужно, это скопировать один заголовок, чтобы я знал значение каждого столбца.

Ваша помощь высоко ценится и заранее благодарим.

UPDATE:

Я попытался использовать пост, приведенный ниже, предполагая, что это похожий вопрос, и я отредактировал свой код, чтобы он выглядел так:

sharedDocs = "C:\\SPSharedDocuments\\*.xlsx"
invoices = "C:\\SPInvoices\\*.xlsx"
formsCerts = "C:\\SPForms&Certificates\\*.xlsx"
mgmt = "C:\\SPManagement\\*.xlsx"

files = [sharedDocs, invoices, formsCerts, mgmt]

for docs in files:
    excel = []
    for file in glob.glob(docs):
        excel.append(pd.read_excel(file))
    df = pd.concat(excel, ignore_index=True, sort = True)

    if sharedDocs == docs:
        df.to_excel("SharedDocsMerged.xlsx", header = False, index = False)
    elif invoices == docs:
        df.to_excel("InvoicesMerged.xlsx", header = False, index = False)
    elif formsCerts == docs:
        df.to_excel("FormsCertsMerged.xlsx", header = False, index = False)
    else:
        df.to_excel("MGMTMerged.xlsx", header = False, index = False)

В результате я получаю 2 лишних столбца слева, отсутствующий столбец и все еще без заголовка.

...