Цикл по множеству dataframe pandas
Есть много датафреймов и есть список с их названиями : tables = ['dfa', 'dfb', 'dfc', 'dfd', 'dfe'] Во всех таблицах есть столбец с названием 'Sum'. Нужно ко всем применить одинаковое выражение, например: df.Sum.astype('float64'). Но в цикле for переменная-итератор воспринимается как строка а не имя датафрейма и выдаёт ошибку: for i in tables: i.Sum.astype('float64')
Как сделать чтобы переменная читалась как имя датафрейма? Пробовал обернуть в eval или exec - не помогает.
Ответы (1 шт):
Уберите апострофы:
tables = [dfa, dfb, dfc, dfd, dfe]
Другой подход:
tables = ['dfa', 'dfb', 'dfc', 'dfd', 'dfe']
for i in tables:
locals()[i].Sum.astype('float64')
Объяснение:
Стандартная функция locals() возвращает словарь всех местных переменных, причем ключами являются их имена в виде строк и значениями самые объекты.