Как динамически называть кадры данных в Python?

У меня есть файл excel, который содержит более 30 листов. Однако операция, которую я выполняю на каждом листе, остается более или менее одинаковой. Но моя цель - создать отдельный фрейм данных для каждого листа, чтобы я мог ссылаться в будущем.

Это то, что я пробовал, но выдает ошибку

xls = pd.ExcelFile('DC_Measurement.xlsx')
sheets = xls.sheet_names
for s in sheets:
    print(s)
    'df '+ s = pd.read_excel(xls, sheet_name=s)

Итак, я хочу, чтобы было создано 30 фреймов данных, и каждый фрейм данных будет иметь имя листа в качестве имени суффикса. Я пробовал использовать оператор "+", но это тоже не помогло. Он выдал сообщение об ошибке, как показано ниже

  SyntaxError: can't assign to operator

Как я могу создавать кадры данных на лету и называть их?

Вы можете создать словарь с ключом как df_{}.format(s) и val как pd.read_excel(xls, sheet_name=s)

Abdul Niyas P M 24.07.2019 08:37

Возможный дубликат Как создать переменное количество переменных?

Mike Scotty 24.07.2019 08:53
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
722
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Вы можете использовать что-то вроде этого:

for s in sheets:
    vars()['df'+ s] = pd.read_excel(xls, sheet_name=s)

Какое здесь будет имя фрейма данных? Он начинается с df, за которым следует имя листа, или просто имя листа? Потому что, когда я следую этому решению. Я не получаю имя кадра данных?

The Great 23.10.2019 06:56

Имя будет начинаться с df, за которым следует имя листа. Например, если имя листа Sheet1 и Sheet2, имя dfs будет: dfSheet1 и dfSheet2 (это имя в квадратных скобках: df+s)

Joe 23.10.2019 07:58

Или используйте locals:

for s in sheets:
    locals()['df'+ s] = pd.read_excel(xls, sheet_name=s)

В функции измените locals на globals.

Наилучший подход обычно состоит в том, чтобы хранить фреймы данных в списке или словаре, где вы можете систематически работать с ними, например:

xls = pd.ExcelFile('DC_Measurement.xlsx')
sheets = {}
for s in xls.sheet_names:
    print(s)
    sheets[s] = pd.read_excel(xls, sheet_name=s)

Или только это:

xls = pd.ExcelFile('DC_Measurement.xlsx')
sheets = {
    s: pd.read_excel(xls, sheet_name=s)
    for s in xls.sheet_names
}

Это упростит программную работу с листами позже (просто нажмите sheets[s], где s — имя листа). В противном случае вы столкнетесь со сложной проблемой, как получить доступ ко всем фреймам данных, которые вы только что создали, как к свободно плавающим переменным.

Строго говоря, это не ответ на ваш вопрос, но это создаст словарь, где ключом является имя листа, а значением является фрейм данных.

workbook = pd.read_excel('DC_Measurement.xlsx', sheet_name = None)

Затем вы можете получить нужный фреймворк данных.

df = workbook['sheet_name']

Я думаю, что это более аккуратно, чем другие решения.

Другие вопросы по теме