создать словари для объединения столбцов данных в pandas - PullRequest
3 голосов
/ 01 апреля 2020

Если у меня есть 100 столбцов в кадре данных, и я хочу создать словари пары столбцов, ключ всегда будет фиксированными столбцами. Как это можно сделать?

Допустим, у нас есть такой кадр данных:

k    v1    v2    ...    v99
============================
i    1     2     ...    9
ii   11    22    ...    99
iii  111   222   ...    999
...

Я бы хотел словари dict_v1, dict_v2 ... dict_v99. Например, dict_v2 будет:

{'i': 2, 'ii': 22, 'iii': 222, ...}

1 Ответ

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

Я предлагаю создать словарь словарей, например:

d = df.set_index('k').to_dict()
print (d)
{'v1': {'i': 1, 'ii': 11, 'iii': 111}, 
 'v2': {'i': 2, 'ii': 22, 'iii': 222}, 
 'v99': {'i': 9, 'ii': 99, 'iii': 999}}

Тогда каждый диктовку можно выбрать по ключу:

print (d['v2'])
{'i': 2, 'ii': 22, 'iii': 222}

Другая идея должна быть:

df1 = df.set_index('k')
print (df1)
      v1   v2  v99
k                 
i      1    2    9
ii    11   22   99
iii  111  222  999

print (df1['v2'].to_dict())
{'i': 2, 'ii': 22, 'iii': 222}

То, что вам нужно, возможно, но плохая идея динамически добавлять имена в пространство имен Python. :

for k, v in df.set_index('k').to_dict().items():
    globals()[f'dict_{k}'] =  v

print (dict_v2)
{'i': 2, 'ii': 22, 'iii': 222}
...