То, что следует, имеет смысл только в том случае, если вы не имеете в первую очередь контроля над тем, как создаются кадры данных (см. Последний раздел ответа для предложения здравого смысла).
Как насчет отображения объектов на их
идентичность с использованием функции
globals () (или
locals () )? Итак, давайте сначала определим
get_name_of
, пользовательскую функцию для выполнения этой работы
def get_name_of(o):
o_id = id(o)
for objname, obj in globals().items():
obj_id = id(obj)
if obj_id == o_id:
return objname
, а затем используем ее следующим образом
>>> get_name_of(dept[0])
'Phy'
То, что показано, нужно сделать такая вещь может быть сигналом того, что ваш код должен быть каким-то образом «переработан». Если у вас есть элемент управления в первую очередь о том, как / когда / где создаются кадры данных, лучшим подходом является непосредственное сохранение их в словаре с их именем. Т.е. делать
your_dict = {}
# ...
your_dict['Chem'] = pd.DataFrame(...)
# and so on...