Я перечитал ваш вопрос и думаю, что правильно его понял.Вы хотите узнать, истек ли срок действия какого-либо заказа в new_orders
(вы называете его data
), используя expired_orders
(вы называете его data2
).
Если вы перефразируете свой вопрос, что вы хотитесделать это: 1) выяснить, находится ли значение в столбце в DataFrame
в столбце в другом DataFrame
, а затем 2) удалить строки, где значение существует в обоих .
Использование pd.merge
является одним из способов сделать это.Но поскольку вы хотите использовать expired_orders
для фильтрации new_orders
, pd.merge
кажется немного излишним.
У Pandas на самом деле есть метод для такого рода вещей, и он называется isin()
, поэтому давайте использовать это!Этот метод позволяет вам проверить, существует ли значение в одном column
в другом column
.
df_1['column_name'].isin(df_2['column_name'])
isin()
возвращает Series
значений True / False, которые вы можете применить для фильтрации вашихDataFrame, используя его в качестве маски: df[bool_mask]
.
Так как вы используете это в вашей ситуации?
is_expired = new_orders['order_column'].isin(expired_orders['order_column'])
results = new_orders[~is_expired].copy() # Use copy to avoid SettingWithCopyError.
~
равно не так - значит ~is_expired
означаетчто срок действия заказа не истек.