为大熊猫中数据框的列组合创建字典

时间:2020-04-01 05:23:41

标签: python pandas dictionary

如果我在一个数据框中有100列,并且我想创建一对列的字典,那么键将始终是固定列。怎么办?

假设我们有一个这样的数据框:

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

我想要字典dict_v1dict_v2 ... dict_v99。例如dict_v2为:

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

1 个答案:

答案 0 :(得分:2)

我建议创建字典字典,如:

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}

您可能需要的只是bad idea to add names dynamically to a Python namespace.

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}