robinhoodjr:
Si tengo 100 columnas de una trama de datos y quiero crear diccionarios de par de columnas, la clave sería siempre una columnas fijas. ¿Cómo puede hacerse esto?
Digamos que tenemos una trama de datos de esta manera:
k v1 v2 ... v99
============================
i 1 2 ... 9
ii 11 22 ... 99
iii 111 222 ... 999
...
Me gustaría que los diccionarios dict_v1
, dict_v2
... dict_v99
. Por ejemplo dict_v2
sería:
{'i': 2, 'ii': 22, 'iii': 222, ...}
Jezreel:
Sugiero crear el diccionario de diccionarios como:
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}}
A continuación, cada dict es posible seleccione con la tecla:
print (d['v2'])
{'i': 2, 'ii': 22, 'iii': 222}
Otra idea debe ser:
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}
Lo que necesita es posible, pero es mala idea añadir nombres dinámicamente a un espacio de nombres de 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}