Как прочитать в цикле .xlsx файлы с одинаковым именем из двух заданных подпапок?

Пытаюсь циклом зайти в две папки с номерами 1 и 2, которые в свою очередь лежат в папке const_Folder (заранее объявленный путь). Внутри папок 1 и 2 лежат файлы products.xlsx и имя файла в обеих одинаковые.

Мне нужно прочитать оба .xlsx файла, и сделать из низ один df с помощью concat.

В итоге, внутри df лежат только данные из папки 2.

Что я делаю не так?

for i in np.arange(1, n_param+1, 1):
    i = str(i)
    all_files = glob.glob(const_Folder + '\\' + i + '\\products.xlsx') 

li = []

for filename in all_files:
    df = pd.read_excel(filename, header=0)
    li.append(df)

frame = pd.concat(li, axis=0)

Пример данных из файлов .xlsx:

:исходные


Ответы (3 шт):

Автор решения: Alexandr

Скорее всего проблема в перезаписи новых данных поверх старых, необходимо объявить списком all_files и реализовать добавление данных в этот список.

Вместо:

all_files = glob.glob(const_Folder + '\\' + i + '\\products.xlsx') 

Добавить

all_file.append(glob.glob(const_Folder + '\\' + str(i) + '\\products.xlsx') )
→ Ссылка
Автор решения: Doc Dark

Вы используете

all_files = glob.glob(const_Folder + '\\' + i + '\\products.xlsx') 

по идее, тут на выходе имеем массив путей, подходящих под шаблон. Почему бы не делать примерно вот так?

all_files = glob.glob(const_Folder + '\\[0-9]\\products.xlsx')
li = []
for filename in all_files:
    df = pd.read_excel(filename, header=0)
    li.append(df)
frame = pd.concat(li, axis=0) 

Синтаксис не проверял, печатал в браузере, идея должна быть понятна.. ссылка на описание синтаксиса и примеров использования https://pythonworld.ru/moduli/modul-glob.html

→ Ссылка
Автор решения: MaxU

Если в папке const_Folder существуют только две подпапки с нужным файлом:

from pathlib import Path

df = pd.concat([pd.read_excel(f) 
                for f in Path(const_Folder).glob("**/products.xlsx")], 
               ignore-index=True)

Если файл "products.xlsx" существует и в других подпапках, из которых его читать не надо:

import os.path as osp

dir_template = osp.join("const_Folder", "{}/products.xlsx")
subdirs = ["1", "2"]

df = pd.concat([pd.read_excel(dir_template.format(i))
                for i in subdirs], 
               ignore_index=True)
→ Ссылка