首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据到字典,值出来乱码。

数据到字典,值出来乱码。
EN

Stack Overflow用户
提问于 2019-07-30 04:39:38
回答 2查看 183关注 0票数 0

我有一个dataframe,其中包含两个列,我想将它们转换成一个字典,作为映射使用。

我尝试过多种转换方法,但我的字典值总是以错误的顺序出现。我的python版本是3,Pandas版本是0.24.2。

这就是我的dataframe的前几行的样子:

代码语言:javascript
复制
geozip.head()
Out[30]: 
    Geoid    ZIP
0  100100  36276
1  100124  36310
2  100460  35005
3  100460  35062
4  100460  35214

我希望我的字典看起来像这样:

代码语言:javascript
复制
{100100: 36276,
100124: 36310,
100460: 35005,
100460: 35062,
100460: 35214,...}

但是,我的输出却给出了值的错误顺序。

代码语言:javascript
复制
{100100: 98520,
 100124: 36310,
 100460: 57520,
 100484: 35540,
 100676: 19018,
 100820: 57311,
 100988: 15483,
 101132: 36861,...}

我先试了一下,但字典出得乱七八糟:

代码语言:javascript
复制
geozipmap = geozip.set_index('Geoid')['ZIP'].to_dict()

然后,我尝试先将这两列转换为list,然后转换为字典,但也出现了同样的问题:

代码语言:javascript
复制
geoid = geozip.Geoid.tolist()
zipcode = geozip.ZIP.tolist()
geozipmap = dict(zip(geoid, zipcode))

我试着转换到OrderedDict,但这也不起作用。然后我试过:

代码语言:javascript
复制
geozipmap = {k: v for k, v in zip(geoid, zipcode)}

我也试过:

代码语言:javascript
复制
geozipmap = {}
for index, g in enumerate(geoid):
    geozipmap[geoid[index]] = zipcode[index]    

我也尝试过建议的答案:panda dataframe to ordered dictionary

这些都不管用。真的不知道这是怎么回事?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-30 05:25:33

尝试这个default_dict,如果相同的key有多个值,您可以将它们作为列表提供

代码语言:javascript
复制
from collections import defaultdict

df =pd.DataFrame(data={"Geoid":[100100,100124,100460,100460,100460],
                   "ZIP":[36276,36310,35005,35062,35214]})
data_dict = defaultdict(list)

for k,v in zip(df['Geoid'],df['ZIP']):
   data_dict[k].append(v)

print(data_dict)
代码语言:javascript
复制
defaultdict(<class 'list'>, {100100: [36276], 100124: [36310], 100460: [35005, 35062, 35214]})
票数 0
EN

Stack Overflow用户

发布于 2019-07-30 05:00:49

这对你有用吗?

代码语言:javascript
复制
dfG = df['Geoid'].values
dfZ = df['ZIP'].values
for g , z in zip (dfG,dfZ):
    print(str(g)+':'+str(z))

这给出了如下的输出(但值是字符串)

代码语言:javascript
复制
100100:36276
100124:36310
100460:35005
100460:35062
100460:35214

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57264388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档