Скажем, у меня есть два фрейма данных, исходный и корректирующий фреймы данных, так что
orig = pd.DataFrame({'Name':['A','B'],'Code':['9q8','7k2']})
Name Code
A 9q8
B 7k2
corr = pd.DataFrame({'Name':['A',],'Code':['9R8',]})
Name Code
A 9R8
Как я могу назначить orig['Code']=corr['Code']
везде orig['Name']==corr['Name]
, не объединяя и не повторяя каждую коррекцию в corr итогда каждый оригинал в оригинале?Окончательный результат должен выглядеть следующим образом:
Name Code
A 9R8
B 7k2
Я видел еще одну публикацию переполнения стека , похожую на мой текущий вопрос, но в этом примере в ответе использовалось слияние, а затем механизм выбораизбавиться от старых строк, которые больше не нужны.Однако у меня нет такого механизма отбора.
Например, если я объединю orig и corr, я получу:
out = pd.merge(orig,corr,on='Name',how='outer')
Name Code
A 9q8
A 9R8
B 7k2
Что, если я смотрю на тысячи строк, не оставляет мне никакого способа узнать, какой из A 9q8
и A 9R8
была заменой, а которая - нет.Я не могу использовать столбец индикатора, чтобы отличить замены от не подстановок, потому что удаление всех записей «только для левого» »также приведет к удалению записи B 7k2
.