Tengo el siguiente DataFrame:
cliente item1 item2 item3 1 tomate de leche de manzana 2 papas de naranja con agua 3 chips de jugo de mango
que quiero traducir a la lista de diccionarios por fila
rows = [{'customer': 1, 'item1': 'apple', 'item2': 'milk', 'item3': 'tomato'},
{'customer': 2, 'item1': 'water', 'item2': 'orange', 'item3': 'potato'},
{'customer': 3, 'item1': 'juice', 'item2': 'mango', 'item3': 'chips'}]
Respuestas:
Editar
Como John Galt menciona en su respuesta , probablemente deberías usarlo
df.to_dict('records')
. Es más rápido que transponer manualmente.Respuesta original
Uso
df.T.to_dict().values()
, como a continuación:fuente
df.T.to_dict().values()
, también pierdo el orden de clasificaciónunicodecsv.DictReader
Uso
df.to_dict('records')
: proporciona la salida sin tener que transponer externamente.fuente
i.e. is the nth entry in the resulting list always also the nth column?
enésima columna o enésima fila?Como una extensión a la respuesta de John Galt :
Para el siguiente DataFrame,
Si desea obtener una lista de diccionarios, incluidos los valores de índice, puede hacer algo como,
Que genera un diccionario de diccionarios donde las claves del diccionario principal son valores de índice. En este caso particular,
fuente
Si está interesado en seleccionar solo una columna, esto funcionará.
Lo siguiente NO funcionará y producirá un TypeError: tipo no compatible:. Creo que esto se debe a que está tratando de convertir una serie a un dict y no un Data Frame a un dict.
Tenía el requisito de seleccionar solo una columna y convertirla en una lista de dictados con el nombre de la columna como clave y me quedé atascado en esto por un momento, así que pensé en compartirlo.
fuente