Чтение нескольких файлов Excel по порядку из папки с Python - PullRequest
2 голосов
/ 24 февраля 2020

У меня есть папка с несколькими файлами Excel в формате xls и xlsx, и я пытаюсь прочитать их и объединить в одном Dataframe. Проблема, с которой я сталкиваюсь, заключается в том, что python не читает файлы в папке в правильном порядке.

Моя папка содержит следующие файлы: 190.xls, 195.xls, 198.xls, 202.xlsx, 220.xlsx и т. Д.

Это мой код:

import pandas as pd
from pathlib import Path

my_path = 'my_Dataset/'

xls_files = pd.concat([pd.read_excel(f2) for f2 in Path(my_path).rglob('*.xls')], sort = False)

xlsx_files = pd.concat([pd.read_excel(f1) for f1 in Path(my_path).rglob('*.xlsx')],sort = False)

all_files = pd.concat([xls_files,xlsx_files],sort = False).reset_index(drop=True))

Я получаю то, что хочу, но ФАЙЛЫ НЕ СОКРАЩАЮТСЯ, ЧТОБЫ ОНИ БЫЛИ НА ПАПКУ !!!!! Это означает, что в кадре данных all_files у меня сначала есть данные из 202.xlsx, а затем из 190.xls

Как я могу решить эту проблему? Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 24 февраля 2020

Попробуйте использовать

import pandas as pd
from pathlib import Path

my_path = 'my_Dataset/'
all_files = pd.concat([pd.read_excel(f) for f in sorted(list(Path(my_path).rglob('*.xls')) + list(Path(my_path).rglob('*.xlsx')), key=lambda x: int(x.stem))],sort = False).reset_index(drop=True) 
0 голосов
/ 24 февраля 2020

Обновить это

all_files = pd.concat([xls_files,xlsx_files],sort = False).reset_index(drop=True))

до этого

all_files = pd.concat([xlsx_files,xls_files],sort = False).reset_index(drop=True))
...