Доступ к имени элемента из списка данных - PullRequest
3 голосов
/ 27 апреля 2020

У меня есть список фреймов данных следующим образом:

dept = [Phy,Chem,Bio,Maths,Social]

Каждый из фреймов данных имеет огромное количество данных. Мне нужно получить доступ к имени этих фреймов данных из списка для дальнейшего использования в цикле. Я попробовал этот код, например:

str(dept[0])

Но это дает мне содержимое фрейма данных 'Phy'. Где мне нужно просто напечатать «Phy».

1 Ответ

2 голосов
/ 27 апреля 2020

То, что следует, имеет смысл только в том случае, если вы не имеете в первую очередь контроля над тем, как создаются кадры данных (см. Последний раздел ответа для предложения здравого смысла).


Как насчет отображения объектов на их идентичность с использованием функции 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...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...