#python #pandas #python-2.7 #dictionary
#python #pandas #python-2.7 #словарь
Вопрос:
У меня есть фрейм данных pandas со 100 столбцами, и я хочу создать словарь для каждого столбца с первым столбцом в качестве ключа, и я делал это вручную.
Позвольте мне объяснить с помощью примера фрейма данных
ID a b c
123 jon foo bar
789 pan bam fan
278 car bike boat
Давайте рассмотрим приведенную выше таблицу с именами столбцов ID, a, b, c. Теперь я пытаюсь создать словари для каждого столбца с идентификатором, являющимся ключом словаря.
что-то вроде приведенного ниже
dicta = {ID: a}
dictb = {ID: b}
dictc = {ID: c}
Что я делаю в настоящее время, так это:
dicta_ = dict(zip(df['ID'], df['a']))
dicta = {k:v for k,v in dicta_.items()}
dictb_ = dict(zip(df['ID'], df['b']))
dictb = {k:v for k,v in dictb_.items()}
dictc_ = dict(zip(df['ID'], df['c']))
dictc = {k:v for k,v in dictc_.items()}
и приведенный выше код выдает мне желаемый результат, но я должен сделать это вручную для всех 100 столбцов, что не самый эффективный способ сделать это.
Я был бы очень признателен, если бы смог получить некоторую помощь или предложение по автоматизации процесса путем написания цикла или функции. Заранее спасибо!
Комментарии:
1. Это кажется очень простой функциональностью. Вы прошли через руководство по Python? ( docs.python.org/3/tutorial )
2. @thebjorn, я был бы очень признателен, если бы вы могли предоставить мне подход к вышеупомянутой проблеме, если вы считаете, что это очень простая функциональность. Спасибо:)
Ответ №1:
set_index
затем используйте df.to_dict()
:
d = df.set_index('ID').to_dict()
затем вызовите столбец со значением:
d['a']
# {123: 'jon', 278: 'car', 789: 'pan'}
d['b']
# {123: 'foo', 278: 'bike', 789: 'bam'}