¿Cuál es la forma más eficiente de organizar el siguiente marco de datos de pandas?
datos =
Position Letter
1 a
2 b
3 c
4 d
5 e
en un diccionario como alphabet[1 : 'a', 2 : 'b', 3 : 'c', 4 : 'd', 5 : 'e']
?
python
dictionary
pandas
dataframe
usuario1083734
fuente
fuente
izip
, en lugar dezip
; generador hace la diferencia, supongoEncontré una forma más rápida de resolver el problema, al menos en conjuntos de datos de gran realismo utilizando:
df.set_index(KEY).to_dict()[VALUE]
Prueba en 50,000 filas:
Salida:
fuente
En Python 3.6, la forma más rápida sigue siendo la WouterOvermeire. La propuesta de Kikohs es más lenta que las otras dos opciones.
Resultados:
fuente
TL; DR
En largo
Explicando la solución:
dict(sorted(df.values.tolist()))
Dado:
[fuera]:
Tratar:
[fuera]:
Entonces opcionalmente:
O:
[fuera]:
Por último, convierta la lista de la lista de 2 elementos en un dict.
[fuera]:
Relacionado
En respuesta al comentario de @sbradbio:
Si hay varios valores para una clave específica y desea conservarlos todos, no es la forma más eficiente sino la más intuitiva:
[fuera]:
fuente
{'key': [value1, value2]}