использовать значение словаря в качестве переменной для df - PullRequest
0 голосов
/ 17 апреля 2020

Я импортирую несколько фреймов данных и написал следующий процесс: 1. список файлов, которые будут добавлены в фреймы данных + 2. список имен, которые я хочу для соответствующих фреймов данных. 3. Я объединил список в словарь:

tbls = ['tbl1', 'tbl2', 'tbl3']
dbname = ['dfABC', 'dfrand', 'dfXYZ']
dictdf = dict(zip(tbls, dbname)) 

Затем я перебираю tbls для импорта данных. (getdf ниже - это короткая функция, которую я написал, которая читает путь, имя листа и т. д. c. для файла excel / csv, в котором находится таблица (данные) и импортирует данные.

for tbl in tbls:          
   dictdf[tbl] = getdf(tbl, dfRT, sfsession)

Процесс работает, за исключением того, что кадры данных записываются в словарь, т. е. dfAB C в словаре заменяется на кадр данных из 65 тыс. строк и 27 столбцов и т. д. 65krows и 27 cols, т.е. в приведенном выше коде. Я попытался:

str(dictdf[tbl]) = getdf(tbl, dfRT, sfsession)

, но это дало ошибку. Есть ли способ сделать это? спасибо.

1 Ответ

0 голосов
/ 18 апреля 2020

решено с помощью exe c и перелистыванием словаря (переворот не требуется для решения):

tbls = ['tbl1', 'tbl2', 'tbl3']
dfa = ['dfABC', 'dfrand', 'dfXYZ']
dictdf = dict(zip(dbname, tbls)) 
for df in dfs:
   tbl = dictdf[df]
   exec(f'{df} = getdf(\'{tbl}\', dfRT, sfsession)')

обратите внимание на комментарии @Xukrao и @ Yo_Chris о сохранении dfs в словаре как превосходное решение.

Я нашел этот вопрос полезным, чтобы понять, как работает exe c: В чем разница между eval, exe c и compile?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...