保留顺序时将数据框转换为字典

时间:2019-07-29 16:15:17

标签: python-3.7

我有一个包含两列的数据框,我想将其转换为字典以用作地图。
我尝试了多种转换方式,但我的字典值总是出现错误的顺序。

这是我数据框的前几行:

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

1 个答案:

答案 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)])