我有一个国家代码的df:
cntr
0 CN
1 CH
我想从字典中映射我的全名和地区
cntrmap = {"CN":["China","Asia"],"CH":["Switzerland","Europe"]}
我希望有这样的东西,但不起作用..
df['name'] = df['cntr'].map(cntrmap)[0]
df['region'] = df['cntr'].map(cntrmap)[1]
你们有什么建议吗?感谢大家!
您可以通过DataFrame.from_dict
和DataFrame.join
创建帮助器DataFrame,默认左边连接为原始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)
使用map
可以达到同样的效果:
df.join(pd.DataFrame(df['cntr'].map(m).tolist(), columns=['name', 'region']))
输出:
cntr name region
0 CN China Asia
1 CH Switzerland Europe