pandas数据框到词典列表

我有以下的DataFrame:

客户item1 item2 item3
 1个苹果牛奶番茄
 2水橙土豆
 3汁芒果芯片

我想把它翻译成每行字典列表

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

使用df.T.to_dict().values() ,如下所示:

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

正如John Galt在他的回答中提到的那样,你可能应该使用df.to_dict('records') 。 这比手动移调要快。

 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 

使用df.to_dict('records') – 给出输出,而不必外部转置。

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

作为John Galt的答案的延伸 –

对于以下DataFrame,

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

如果你想获得包括索引值的字典列表,你可以做一些类似的事情,

 df.to_dict('index') 

其中输出父字典的键是索引值的字典词典。 在这个特殊情况下,

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