Я попробовал еще несколько питонических подходов к этому сценарию, который вы описали, используя понимание списка и понимание слова (вы можете выбрать тот, который вы хотите использовать).
df_dict = { 'df_' + str(c) : pd.read_excel(xls, i) for c, i in enumerate(xls.sheet_names, 1)}
df_list = [pd.read_excel(xls, i) for i in xls.sheet_names]
print(df_dict['df_1'])
print(df_list[0])
Как видно из тестов, оба будут выдавать один и тот же DataFrame.
В первом случае вы получите доступ к своим данным через числовой индекс (df_list[0]
, df_list[1]
и т. Д.).
Во втором вы получите доступ через ключи, используя предложенные вами имена, например, с первым ключом df_dict['df_1']
.
Другим подходом будет динамическое создание переменных, их присвоениена ваш global
диктНапример, приведенный ниже код даст тот же результат, что и показанный выше:
for c, i in enumerate(xls.sheet_names, 1):
globals()['df_' + str(c)] = pd.read_excel(xls, i)
print(df_1)
Однако я не рекомендую использовать это, если это НЕ ДЕЙСТВИТЕЛЬНО обязательно, так как вы можете легко потерять отслеживание созданных переменныхв вашей программе.