#python #python-3.x #pandas #dataframe
Вопрос:
У меня есть два кадра данных. Я должен сопоставить их на основе столбцов поля поиска и обновить эти столбцы в одном из фреймов данных, если будет обнаружено какое-либо несоответствие.
Пример:
lkp_field = ['program_name', 'file_type']
df1:
project_number file_name program_name file_type
10 pdf_11 plasma protein feedback
df2:
project_number file_name program_name file_type
10 pdf_13 oncology guidence
В приведенном выше примере мы видим, что df1 и df2 не совпадают, поэтому мне нужно обновить Lkp_field в df2 из df1.
Конечным результатом будет:
df2:
project_number file_name program_name file_type
10 pdf_13 plasma protein feedback
Комментарии:
1.
df2.update(df1)
2. @AnuragDabas — Он обновляет все столбцы, OP нужно только обновить
lkp_field
Ответ №1:
Если необходимо сопоставить по project_number
значениям, сначала сопоставьте фрейм данных по преобразованию значений в индекс, а затем используйте DataFrame.update
только по выбранным столбцам:
df1 = df1.set_index('project_number')
df2 = df2.set_index('project_number')
df2.loc[:, lkp_field].update(df1.loc[:, lkp_field])
Если один и тот же индекс обоих кадров данных:
df2.loc[:, lkp_field].update(df1.loc[:, lkp_field])
Комментарии:
1. будет ли это работать, если в df1 и df2 будет более 100 записей?
2. @ShivikaPatel — Конечно, нет никаких причин, почему бы не работать.