Совершенно разные, но при этом до невозможности близкие (Эльчин Сафарли). Рассмотрим простой и эффективный способ определения различий в наборах. Сначала создадим демонстрационные датасеты: import pandas as pd
import numpy as np
df1 = pd.DataFrame([[None, np.nan, 23], ['AEH', 2, 14], ['TSA', 1, 22]],
columns=['fio', 'factory', 'salary'])
df2 = pd.DataFrame([['TSA', 1, '22-22-22'], ['STB', 3, '88-88-88'],
[None, 1, None]], columns=['fio', 'factory', 'phone'])
display(df1)
display(df2) Объединим датафреймы и рассмотрим распространенный способ проверки факта отсутствия ключа в одном из наборов при внешнем соединении - пропуски по присоединяемым полям: df = df1.merge(df2, on=['fio', 'factory'], how='outer')
df[df['phone'].isna()] Как можно заметить, такой способ нахождения различий работает не на 100%. Один из пропусков уже был во втором датасете (последний), поэтому он тоже выведен на экран. Более простым способом является использование аргумента