@Andrew: Я считаю, что нашел способ отбросить строки одного кадра данных, которые уже присутствуют в другом (т. е. отвечать на мой EDIT), без использования циклов - сообщите мне, если вы не согласны и / или если мой OP + EDIT не ясно это сказал:
ЭТО РАБОТЫ
Столбы для обоих кадров данных всегда одинаковы - A
, B
, C
и D
. Имея это в виду, в основе которого лежит подход Андрея, вот как удалить строки из df2
, которые также присутствуют в df1
:
common_cols = df1.columns.tolist() #generate list of column names
df12 = pd.merge(df1, df2, on=common_cols, how='inner') #extract common rows with merge
df2 = df2[~df2['A'].isin(df12['A'])]
Строка 3 выполняет следующие действия:
df2
, которые не соответствуют строкам в df1
: A
, чтобы сделать это сравнение - можно использовать любые имена столбцов, но не ВСЕ имена столбцов. ПРИМЕЧАНИЕ. Этот метод по существу является эквивалентом SQL NOT IN()
.