我有一个字典,它是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
答案 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