2017-03-04 8 views
1

私は会社の正しい名前へのIDのマッピングである辞書を持っています。だから、中に入ると、すべての悪い会社名を修正キーが1列で、置き換えられる値が別の列であるデータフレームの値を再マップ

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

: はdictのは、私はに似てデータフレームに適用したいcorrect_names = {1: 'fixed_name', 2:'fixed_name1}

であると言います。

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

答えて

3

私はあなたがcombine_firstmapを使用することができると思う:

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 
関連する問題