Преобразование нескольких столбцов pandas в словари

#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'}