У меня есть два фрейма данных: df1 и df2. df1 имеет столбцы id и name. df2 имеет id и firstname. Я хочу сравнить все iddf1 с id, присутствующим в df2, и для совпадений хочу обновить/перезаписать столбец firstname значением столбца name в df1.
Код, который я пробовал:
df1.loc[df1.id.isin(df2.id),[name]]= df2[[firstname]].values






Вы можете определить отображение серии, а затем использовать pd.Series.map:
id_name_map = df2.set_index('id')['firstname']
df1['name'] = df1['id'].map(id_name_map).fillna(df1['name'])
Или, если вам нужно сделать это наоборот:
id_name_map = df1.set_index('id')['name']
df2['firstname'] = df2['id'].map(id_name_map).fillna(df2['firstname'])
В каждом случае мы используем fillna, чтобы гарантировать, что id, которые не совпадают, не вызовут перезапись имен.
Привет добро пожаловать в ТАК. Прочтите что-нибудь о Макви.