Python 如何快速将pandas数据帧行转换为ordereddict

Python 如何快速将pandas数据帧行转换为ordereddict,python,pandas,dataframe,ordereddictionary,Python,Pandas,Dataframe,Ordereddictionary,正在寻找一种快速的方法,将pandas数据帧中的一行转换为有序的dict,而不使用out using list。这个列表很好,但如果数据集很大,则需要很长时间。我使用菲奥娜GIS阅读器,行是有序的DISTS,给出了数据类型的模式。我使用熊猫来连接数据。在很多情况下,行将具有不同的类型,因此我在考虑使用string类型转换为numpy数组 不幸的是,您不能只执行应用程序(因为它将应用程序放回数据帧): 但您可以将列表理解用于: 如果可以使用生成器(而不是列表)来处理您正在处理的任何内容,那么这通常

正在寻找一种快速的方法,将pandas数据帧中的一行转换为有序的dict,而不使用out using list。这个列表很好,但如果数据集很大,则需要很长时间。我使用菲奥娜GIS阅读器,行是有序的DISTS,给出了数据类型的模式。我使用熊猫来连接数据。在很多情况下,行将具有不同的类型,因此我在考虑使用string类型转换为numpy数组

不幸的是,您不能只执行应用程序(因为它将应用程序放回数据帧):

但您可以将列表理解用于:

如果可以使用生成器(而不是列表)来处理您正在处理的任何内容,那么这通常会更有效率:

In [6]: (OrderedDict(row) for i, row in df.iterrows())
Out[6]: <generator object <genexpr> at 0x10466da50>
[6]中的
:(i的OrderedDict(行),df.iterrows()中的行)
出[6]:

这是在
0.21.0+
函数中通过参数
实现的

df = pd.DataFrame([[1, 2], [3, 4]], columns=['a', 'b'])
print (df)
   a  b
0  1  2
1  3  4

d = df.to_dict(into=OrderedDict, orient='index')
print (d)
OrderedDict([(0, OrderedDict([('a', 1), ('b', 2)])), (1, OrderedDict([('a', 3), ('b', 4)]))])

这是@jezrael答案中to_dict
进入
关键字参数的最佳答案
In [6]: (OrderedDict(row) for i, row in df.iterrows())
Out[6]: <generator object <genexpr> at 0x10466da50>
df = pd.DataFrame([[1, 2], [3, 4]], columns=['a', 'b'])
print (df)
   a  b
0  1  2
1  3  4

d = df.to_dict(into=OrderedDict, orient='index')
print (d)
OrderedDict([(0, OrderedDict([('a', 1), ('b', 2)])), (1, OrderedDict([('a', 3), ('b', 4)]))])