【发布时间】:2019-07-30 02:11:00
【问题描述】:
我有一个包含两列的数据框,我想将它们转换为字典以用作地图。
我尝试了多种转换方式,但我的字典值总是以错误的顺序出现。
这是我的数据框前几行的样子:
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)}
【问题讨论】:
-
字典类型默认是无序的。你试过用有序的字典吗? docs.python.org/3/library/…
-
@ChrisDoyle,是的,我也尝试过,但没有成功。
-
你检查过this anwer 吗?这与您遇到的问题相同。
-
我也试过这个,我得到的错误信息是:“ValueError: orient 'ZIP' not understand”
标签: python-3.7