我有一个包含以下数据的数据框df:
Name Value Code
a 1 1
b 2 1
c 3 2
d 4 2
我想将此数据帧转换为字典。我尝试使用asDict():
map(lambda row: row.asDict(), df.collect())
它给出以下输出:
[{'Code': 1, 'Name': u'a', 'Value': 1}, {'Code': 1, 'Name': u'b', 'Value': 2}, {'Code': 2, 'Name': u'c', 'Value': 3}, {'Code': 2, 'Name': u'd', 'Value': 4}]
此处对字段进行排序。但是我想保留字段的顺序。
我的输出应如下所示:
[{'Name': u'a', 'Value': 1,'Code': 1}, {'Name': u'b', 'Value': 2,'Code': 1}, {''Name': u'c', 'Value': 3,Code': 2}, {'Name': u'd', 'Value': 4,'Code': 2}]
除了使用asDict()方法以外,还有其他方法可以实现此目的吗?
在python中,dict
没有任何顺序概念。您需要使用OrderedDict
。你可以做这样的事情
from collections import OrderedDict
...
map(lambda row: OrderedDict(zip(df.columns, list(row))), df.collect())