Изменение df = ([]) с помощью df = pd.DataFrame () должно помочь. Вы не определили свой df как pandas фрейм данных.
После теста я пришел к следующему:
import pandas as pd
import os
os.chdir(r"path to your excel files")
the_list = []
for root, dirs, files in os.walk(r"path to your excel files"):
for file in files:
if file.endswith('.xlsx'):
the_list.append(file)
def readdataframe(the_list):
df = pd.DataFrame() #define df as an empty pandas DataFrame
for element in the_list:
#print(element)
df[element] = pd.read_excel(element, squeeze=True)
return df
print(readdataframe(the_list))
Вывод:
file1.xlsx file2.xlsx file3.xlsx
0 1 6 11
1 2 7 12
2 3 8 13
3 4 9 14
4 5 10 15
Извините, но скачивать ваши файлы считается плохой практикой, и я не собираюсь его скачивать. Ничего личного, только базовая c цифровая гигиена.
Теперь перейдем к объяснению. Как вы, возможно, заметили в этой строке
df[element] = pd.read_excel(element, squeeze=True)
Я добавил
squeeze = True
Что этот параметр делает, конвертирует фрейм данных это было возвращено в pandas Series (одномерный массив, представьте его как общий список python), потому что у меня был только 1 столбец в каждом из моих файлов и
df [ element] =
Синтаксис устанавливает «элемент» в качестве имени столбца в вашем фрейме данных, в котором вы сохраняете свои данные. Таким образом, этот способ будет работать, только если данные в вашем файле одномерны (только 1 столбец) ) Если нет, то вам, вероятно, следует изучить pandas .concat или pandas Присоединение DataFrame в зависимости от однородности формы данных в файлах и ваших потребностей.
если вы хотите получить несколько фреймов данных, то это то, что я предлагаю.
import pandas as pd
import os
os.chdir(r"path to your excel files")
the_list = []
for root, dirs, files in os.walk(r"path to your excel files"):
for file in files:
if file.endswith('.xlsx'):
the_list.append(file)
def readdataframe(the_list):
df_dict = {}
for element in the_list:
df_dict[element] = pd.read_excel(element)
return df_dict
print(readdataframe(the_list))
Таким образом, вы получаете python словарь (хеш-таблицу), который содержит ваши объекты фрейма данных в качестве значения и имя файла в качестве ключа.