Есть несколько способов подойти к этому, в зависимости от того, как вы относитесь к распределению памяти, и если вы намереваетесь работать с большими наборами данных или только для академических / учебных целей.
- Выполните итерацию сравнений и добавьте их в новый фрейм данных.(Больше кода, более эффективная память)
- Создайте новый объединенный (внешний) фрейм данных и примените функцию для удаления дубликатов.(Меньше кода, но менее эффективно работает с памятью)
Это всего лишь две идеи, но может быть и больше, это только для того, чтобы дать представление.
Решение 1: (учитывая, что идентификаторы уникальны, а не индекс)
list = source['ID'].tolist() #get a list of all the ids in source
results = pd.DataFrame(columns = source.columns.tolist()) #Creates an empty df with same columns
for id in list:
if(~((source[id]['COL1'] == master[id]['COL1']) & (source[id]['COL2'] == master[id]['COL2']))):
#Here we evaluate the cases where everything is equal and execute on negation of said statement (by using ~, which equates to NOT)
results.append(source[id])
Решение 2:
results = source.merge(master, how = 'outer', on= source.columns.tolist()) #assuming both dfs have same columns
final_results = results.drop_duplicates(Keep = False) #this will drop all rows that are duplicated.