Я пишу функцию в пандах, которая может читать файлы Excel из рабочего каталога. Каждый из файлов Excel состоит из нескольких листов, однако соответствующие листы в каждом файле имеют одинаковые имена столбцов, и количество листов в каждом файле также одинаково.
Я хотел бы иметь функцию, которая может объединять / добавлять каждый лист из разных файлов, так что sheet1 из всех файлов объединяется в информационный кадр, sheet2 из всех файлов объединяется как второй dataframe и так далее. В конце я хотел бы узнать количество созданных фреймов данных.
Для этого я написал следующий код:
fpath = "/path to files/"
from os import walk
df = pd.DataFrame()
f = []
xls = []
dff = []
mypath = fpath
for (dirpath, dirnames, filenames) in walk(mypath):
f.extend(filenames)
break
for i in range(0, len(f)):
f[i] = mypath+"/"+f[i]
xls.append(pd.ExcelFile(f[i]))
cout = 0
for fil in range(0, len(xls)):
for sh in range(0, len(xls)):
if(cout <= len(xls)):
df = df.append(pd.read_excel(xls[sh], fil))
dff.append(df)
cout = cout + 1
Я ввел переменную cout, чтобы контролировать, что после каждого слияния / добавления листа 1 из всех файлов цикл должен прерываться, иначе все листы будут объединены в один кадр данных.
Проблема : Проблема в том, что функция останавливается после возврата только одного кадра данных, в котором объединены первые листы. Если я уберу переключатель «cout», то все листы будут объединены. Может ли кто-нибудь помочь мне исправить код функции так, чтобы он 1) объединял / добавлял соответствующие листы из каждого файла, 2) создавал фрейм данных из (1) и возвращал фреймы данных? Таким образом, у меня будет информационный блок для каждого объединенного / добавленного листа.
Может кто-нибудь помочь, пожалуйста?
Примечание: Я делаю это в пандах, но любезно предлагаю, если вы считаете, что есть лучшие альтернативы в R или любом другом языке программирования.