我有一个包含两列的数据框,我想将其转换为字典以用作地图。
我尝试了多种转换方式,但我的字典值总是出现错误的顺序。
这是我数据框的前几行:
geozip.head()
Out[30]:
Geoid ZIP
0 100100 36276
1 100124 36310
2 100460 35005
3 100460 35062
4 100460 35214
我希望我的字典看起来像这样:
{100100: 36276,
100124: 36310,
100460: 35005,
100460: 35062,
100460: 35214,...}
但是相反,我的输出给出了错误的值顺序。
{100100: 98520,
100124: 36310,
100460: 57520,
100484: 35540,
100676: 19018,
100820: 57311,
100988: 15483,
101132: 36861,...}
我首先尝试了此方法,但是字典无序出现:
geozipmap = geozip.set_index('Geoid')['ZIP'].to_dict()
然后我尝试将两列首先覆盖到列表中,然后转换为字典,但是发生了相同的问题:
geoid = geozip.Geoid.tolist()
zipcode = geozip.ZIP.tolist()
geozipmap = dict(zip(geoid, zipcode))
我尝试转换为OrderedDict,但也没有用。 然后我尝试了:
geozipmap = {k: v for k, v in zip(geoid, zipcode)}
答案 0 :(得分:0)
在pandas==0.25
中,您可以将OrderedDict
作为into
参数(如@Chris Doyle所指出。以下是一个示例:
from collections import OrderedDict
geozipmap = cityplace.set_index('Geoid')['ZIP'].to_dict(into=OrderedDict)
geozipmap
Out[1]:
OrderedDict([(100100, 36276), (100124, 36310), (100460, 35214)])