根据ID替换/加入名称,并检查和替换所有已根据ID更改的名称



我有两个不同的数据帧,其中包含关于;名称";以及";id";Df1大于df2。我想";加入";在ID上,这样来自df2的品牌名称在df1中将被认为是正确的。然而,我也想找到df1中被替换的所有名称,并将它们替换为df2中的相关名称。样品:df1

index    id         name
0        123        Del Monte
154047   124        Pokmon
171696   125        Pokmon
69264    126        Pokmon
df2
index   name     id
79376   Pokémon  124        
135487  Pokémon  125        

结果:

df1
index    id         name
0        123        Del Monte
154047   124        Pokémon
171696   125        Pokémon
69264    126        Pokémon

使用Series.mapSeries.fillna以及通过与DataFrame.dropnaDataFrame.drop_duplicates:的左联接创建的辅助Series

s = (df1.merge(df2, on='id', how='left')
.dropna(subset=['name_y'])
.drop_duplicates(['name_x','name_y'])
.set_index('name_x')['name_y'])
df1['name'] = df1['name'].map(s).fillna(df1['name'])
print (df1)
index   id       name
0       0  123  Del Monte
1  154047  124    Pokémon
2  171696  125    Pokémon
3   69264  126    Pokémon

最新更新