使用python pandas在数据帧中使用多个字典重新映射多个列值

时间:2018-04-09 07:32:12

标签: python python-2.7 pandas

我有以下数据框格式

name,state,country
a,1,67
b,2,52

我有以下州代码和国家代码映射字典

state_map = { 1:'tn', 2:'kerala' }
country_map = { 67: 'usa', 52: 'india'
我使用过data.replace({'state':state_map,'country':'country_map'}) 如果我们给出一个列映射但不适用于多个映射字典

,它的工作原理

2 个答案:

答案 0 :(得分:1)

From the documentation如果给出替换词:

  • 嵌套词典,例如{'a':{'b':nan}},内容如下: 在列'a'中查找值'b'并将其替换为nan。您可以 嵌套正则表达式。请注意列名称( 嵌套字典中的顶级字典键不能是常规的 表达式。

所以对于你的情况你的dict看起来像:

r_map = {'state':{'1':'tn', '2':'kerala'},'country':{'67':'usa', '52':'india'}}

像这样使用:

df.replace(r_map)

答案 1 :(得分:0)

上面的解决方案要花很多时间,因此请使用下面的代码代替,以获得更好的性能(请注意,fillna用于在找不到匹配项时填充默认值):-

df['state'].map(state_map).fillna(0)
df['country'].map(country_map).fillna(0)