Файл Excel перезаписывается вместо concat - Python - Pandas - PullRequest
1 голос
/ 13 марта 2019

Я пытаюсь соединить все файлы Excel и рабочие листы в них, используя один скрипт ниже. Это вроде работает, но затем файл Excel c.xlsx перезаписывается для каждого файла, поэтому констатируется только последний файл Excel, не знаю почему?

import pandas as pd
import os
import ntpath
import glob

dir_path = os.path.dirname(os.path.realpath(__file__))
os.chdir(dir_path)
cdf = None
for excel_names in glob.glob('*.xlsx'):
    print(excel_names)
    df = pd.read_excel(excel_names, sheet_name=None, ignore_index=True)
    cdf = pd.concat(df.values())
    cdf.to_excel("c.xlsx", header=False, index=False)

Ответы [ 3 ]

2 голосов
/ 13 марта 2019

Идея состоит в создании списка DataFrame s в понимании списка, но поскольку работа с orderdict необходима concat в цикле, а затем снова concat для одного большого окончательного DataFrame:

cdf = [pd.read_excel(excel_names, sheet_name=None, ignore_index=True).values() 
       for excel_names in glob.glob('files/*.xlsx')]

df = pd.concat([pd.concat(x) for x in cdf], ignore_index=True)
#print (df)

df.to_excel("c.xlsx", index=False)
0 голосов
/ 14 марта 2019

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

import pandas as pd
import numpy as np
import glob

all_data = pd.DataFrame()
for f in glob.glob("my_path/*.xlsx"):
    df = pd.read_excel(f, sheet_name=None, ignore_index=True)
    cdf = pd.concat(df.values())
    all_data = all_data.append(cdf,ignore_index=True)
print(all_data)
df = pd.DataFrame(all_data)
df.shape
df.to_excel("my_path/final.xlsx", sheet_name='Sheet1')
0 голосов
/ 14 марта 2019

Я только что проверил код ниже.Он объединяет данные из всех файлов Excel в папке в один отдельный файл Excel.

import pandas as pd
import numpy as np

import glob
glob.glob("C:\\your_path\\*.xlsx")

all_data = pd.DataFrame()
for f in glob.glob("C:\\your_path\\*.xlsx"):
    df = pd.read_excel(f)
    all_data = all_data.append(df,ignore_index=True)
print(all_data)
df = pd.DataFrame(all_data)
df.shape
df.to_excel("C:\\your_path\\final.xlsx", sheet_name='Sheet1')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...