Как я могу улучшить время чтения нескольких файлов Excel, используя python? - PullRequest
0 голосов
/ 30 апреля 2020

Я создал функцию, которая перебирает папку, содержащую файлы Excel, и создает список всех заголовков на всех листах. I t работает нормально, но ОЧЕНЬ медленно . У вас есть идеи, как это улучшить? СПАСИБО!

import glob

# file directory
path = r'C:\Users\John\Excel_folder' 
all_files = glob.glob(path + "/*.xlsx")

def get_columns(file):    
    sheets = pd.ExcelFile(file).sheet_names
    for sheet in sheets:
        for i in (list(pd.read_excel(file, sheet, nrows=0).columns)):
                  col.append(i)
col=[]
for i in all_files:
    get_columns(i)

col

1 Ответ

1 голос
/ 30 апреля 2020

Вы можете передать None на sheet_name в read_excel, чтобы прочитать все листы одновременно. Он создает словарь данных, поэтому в конце вы можете делать со списком.

def get_columns(file):
    return [c 
            for df in pd.read_excel(file, 
                                    sheet_name=None, 
                                    nrows=0).values() 
            for c in df.columns]

col = [c for file in all_files for c in get_columns(file)]

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

...