2017-03-04 37 views

回答

3

我认为你可以使用mapcombine_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 
相关问题