为了账号安全,请及时绑定邮箱和手机立即绑定

熊猫映射到数组字典

熊猫映射到数组字典

慕桂英546537 2021-11-30 10:48:25
我有一个 df 国家代码:  cntr0 CN1 CH我想从字典中映射出我的全名和地区cntrmap = {"CN":["China","Asia"],"CH":["Switzerland","Europe"]}我希望有这样的事情,但不起作用..df['name'] = df['cntr'].map(cntrmap)[0]df['region'] = df['cntr'].map(cntrmap)[1]你们有什么建议吗?谢谢大家!
查看完整描述

2 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

默认情况下,您可以通过原始 DataFrame创建辅助 DataFrameDataFrame.from_dict和DataFrame.join到原始 DataFrame 左连接:


df = pd.DataFrame({'cntr':['CN','CH']})


cntrmap = {"CN":["China","Asia"],"CH":["Switzerland","Europe"]}


df1 = pd.DataFrame.from_dict(cntrmap, orient='index', columns=['name','region'])


df = df.join(df1, on='cntr')

print (df)

  cntr         name  region

0   CN        China    Asia

1   CH  Switzerland  Europe

如果为map以下内容创建 2 个字典,您的解决方案有效:


map1 = {k:v[0] for k, v in cntrmap.items()}

map2 = {k:v[1] for k, v in cntrmap.items()}


df['name'] = df['cntr'].map(map1)

df['region'] = df['cntr'].map(map2)


查看完整回答
反对 回复 2021-11-30
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

可以通过以下方式实现相同的目标map:


df.join(pd.DataFrame(df['cntr'].map(m).tolist(), columns=['name', 'region']))

输出:


  cntr         name  region

0   CN        China    Asia

1   CH  Switzerland  Europe


查看完整回答
反对 回复 2021-11-30
  • 2 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信