Pandas DataFrame a la lista de diccionarios

Tengo el siguiente DataFrame:

 cliente item1 item2 item3
 1 manzana leche tomate
 2 papas naranja de agua
 3 chips de mango jugo

Lo 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'}] 

Editar

Como John Galt menciona en su respuesta , probablemente deberías usar df.to_dict('records') . Es más rápido que la transposición manual.

 In [20]: timeit df.T.to_dict().values() 1000 loops, best of 3: 395 µs per loop In [21]: timeit df.to_dict('records') 10000 loops, best of 3: 53 µs per loop 

Respuesta original

Utilice df.T.to_dict().values() , como se muestra a continuación:

 In [1]: df Out[1]: customer item1 item2 item3 0 1 apple milk tomato 1 2 water orange potato 2 3 juice mango chips In [2]: df.T.to_dict().values() Out[2]: [{'customer': 1.0, 'item1': 'apple', 'item2': 'milk', 'item3': 'tomato'}, {'customer': 2.0, 'item1': 'water', 'item2': 'orange', 'item3': 'potato'}, {'customer': 3.0, 'item1': 'juice', 'item2': 'mango', 'item3': 'chips'}] 

Usar df.to_dict('records') : proporciona la salida sin tener que transponer externamente.

 In [2]: df.to_dict('records') Out[2]: [{'customer': 1L, 'item1': 'apple', 'item2': 'milk', 'item3': 'tomato'}, {'customer': 2L, 'item1': 'water', 'item2': 'orange', 'item3': 'potato'}, {'customer': 3L, 'item1': 'juice', 'item2': 'mango', 'item3': 'chips'}] 

Como una extensión de la respuesta de John Galt –

Para el siguiente DataFrame,

  customer item1 item2 item3 0 1 apple milk tomato 1 2 water orange potato 2 3 juice mango chips 

Si desea obtener una lista de diccionarios que incluye los valores de índice, puede hacer algo como:

 df.to_dict('index') 

Que genera un diccionario de diccionarios donde las claves del diccionario principal son valores de índice. En este caso particular,

 {0: {'customer': 1, 'item1': 'apple', 'item2': 'milk', 'item3': 'tomato'}, 1: {'customer': 2, 'item1': 'water', 'item2': 'orange', 'item3': 'potato'}, 2: {'customer': 3, 'item1': 'juice', 'item2': 'mango', 'item3': 'chips'}}