Python 将数据框添加到字典列表

Python 将数据框添加到字典列表,python,list,dictionary,pandas,dataframe,Python,List,Dictionary,Pandas,Dataframe,我有以下数据帧: customer item1 item2 item3 1 apple milk tomato 2 water orange potato 3 juice mango chips 编辑 正如John Galt在中提到的,您可能应该改为使用df.to_dict('records')。它比手动换位快 In [20]: timeit df.T.to_dict

我有以下数据帧:

customer item1 item2 item3 1 apple milk tomato 2 water orange potato 3 juice mango 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.T._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'}]
Use——提供输出而无需外部转置

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'}]
作为答案的延伸-

对于以下数据帧

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

如果您只对选择一列感兴趣,这将起作用

df[["item1"]].to_dict("records")
下面的操作将不起作用,并产生类型错误:不支持的类型:。我认为这是因为它试图将一个系列转换为dict,而不是将一个数据帧转换为dict

df["item1"].to_dict("records")

我要求只选择一列,并将其转换为以列名为键的dict列表,我在上面停留了一段时间,所以我想与大家分享。

欢迎使用Stack Overflow!我将您的代码示例缩进了4个空格,以便正确呈现-有关格式的详细信息,请参阅编辑帮助。我将如何更改它以将索引值包含到结果列表的每个条目中?@gabriel.Oliveira您可以执行df.reset_index().to_dict('records'))在每种情况下是否保留列的顺序,即结果列表中的第n个条目是否始终也是第n列?是否记录了某种神奇的列名?还有其他神奇的列吗?@StephenBoesch请参阅文档:“Records”是指向结果方向的str参数。如果每个客户的数据框包含许多行,那么解决方案是什么?当我使用
df.T.to_dict().values()
,打开csv文件到dict列表时,我也会松开排序顺序,我的速度是UnicodeSv的两倍。DictReader检查下面的答案,即@mirosval和@Zero。最好的方法是使用
df.来记录('records')
df["item1"].to_dict("records")