重新映射数据框中的值,其中键是一列,要替换的值是另一列

时间:2017-03-04 12:22:59

标签: python python-3.x pandas dataframe

我有一个字典,它是id到公司正确名称的映射。 说dict是correct_names = {1: 'fixed_name', 2:'fixed_name1}

我想将其应用于类似于以下的数据框:

        ID     name_col
0       1      name
1       2      name1
2       3      name2
3       4      name3

所以它进入并修复了所有糟糕的公司名称。

        ID     name_col
0       1      fixed_name
1       2      name1
2       3      fixed_name1
3       4      name3

1 个答案:

答案 0 :(得分:3)

我认为您可以map使用combine_first

correct_names = {1: 'fixed_name', 2:'fixed_name1'}
df.name_col = df.ID.map(correct_names).combine_first(df.name_col)
#alternative solution
#df.name_col = df.ID.map(correct_names).fillna(df.name_col)
print (df)
   ID     name_col
0   1   fixed_name
1   2  fixed_name1
2   3        name2
3   4        name3

另一种解决方案:

df = pd.Series(correct_names)
       .combine_first(df.set_index('ID').name_col)
       .rename_axis('ID')
       .reset_index(name='name_col')
print (df)
   ID     name_col
0   1   fixed_name
1   2  fixed_name1
2   3        name2
3   4        name3