Encontré esta pregunta mientras intentaba hacer un diccionario con tres columnas de un marco de datos de pandas. En mi caso, el marco de datos tiene columnas A, B y C (digamos que A y B son las coordenadas geográficas de longitud y latitud y C la región del país / estado / etc., que es más o menos el caso).
Quería un diccionario con cada par de valores A, B (clave del diccionario) que coincida con el valor de C (valor del diccionario) en la fila correspondiente ( se garantiza que cada par de valores A, B es único debido al filtrado anterior, pero es posible tener el mismo valor de C para diferentes pares de valores A, B en este contexto), así que lo hice:
mydict = dict(zip(zip(df['A'],df['B']), df['C']))
Usar pandas to_dict () también funciona:
mydict = df.set_index(['A','B']).to_dict(orient='dict')['C']
(ninguna de las columnas A o B se utilizó como índice antes de ejecutar la línea de creación del diccionario)
Ambos enfoques son rápidos (menos de un segundo en un marco de datos con 85.000 filas, una computadora portátil rápida de doble núcleo de 5 años de antigüedad).
Las razones por las que publico esto:
- para quienes necesitan este tipo de solución
- si alguien conoce una solución de ejecución más rápida (por ejemplo, para millones de filas), agradecería una respuesta.