Если вы хотите проверить равные значения в определенном столбце, скажем, Name, вы можете объединить оба кадра данных в новый:
mergedStuff = pd.merge(df1, df2, on=['Name'], how='inner')
mergedStuff.head()
Я думаю, что это более эффективно и быстрее, чем where
, если выиметь большой набор данных
, и если вы хотите получить различия, вы можете сделать что-то вроде этого:
Этот подход, df1 != df2
, работает только для фреймов данных с одинаковыми строками и столбцами.На самом деле все оси данных сравниваются с помощью метода _indexed_same
, и возникает исключение, если обнаружены различия, даже в порядке столбцов / индексов.
Если я вас правильно понял, вы не хотите находить изменения, но симметричныеразница.Для этого одним подходом может быть объединение фреймов данных:
>>> df = pd.concat([df1, df2])
>>> df = df.reset_index(drop=True)
сгруппировать по
>>> df_gpby = df.groupby(list(df.columns))
получить индекс уникальных записей
>>> idx = [x[0] for x in df_gpby.groups.values() if len(x) == 1]