Pandas DataFrame to List of Dictionaries Pandas DataFrame to List of Dictionaries pandas pandas

Pandas DataFrame to List of Dictionaries


Use df.to_dict('records') -- gives the output without having to transpose externally.

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


Edit

As John Galt mentions in his answer , you should probably instead use df.to_dict('records'). It's faster than transposing manually.

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

Original answer

Use df.T.to_dict().values(), like below:

In [1]: dfOut[1]:   customer  item1   item2   item30         1  apple    milk  tomato1         2  water  orange  potato2         3  juice   mango   chipsIn [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'}]


As an extension to John Galt's answer -

For the following DataFrame,

   customer  item1   item2   item30         1  apple    milk  tomato1         2  water  orange  potato2         3  juice   mango   chips

If you want to get a list of dictionaries including the index values, you can do something like,

df.to_dict('index')

Which outputs a dictionary of dictionaries where keys of the parent dictionary are index values. In this particular case,

{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'}}