У меня есть некоторые данные транзакции клиента, и я хотел бы удалить строки, в которых клиент возвратил продукт и получил возмещение.
У меня есть фрейм данных с именем trx, который содержит product_key (код продукта), gross_sales ( потрачено), member_id (идентификация участника) и trx_date (дата транзакции).
Я хотел бы получить все строки для каждого уникального члена, где положительное значение в валовых продажах (например, 21,30 для члена 22444 ) соответствует отрицательному значению в валовых продажах (например, -21,30 для члена 22444). Это позволит мне определить, будет ли продукт возвращен в течение 14 дней.
Я пробовал следующий код, но компиляция занимает слишком много времени.
product key gross_sales member_id trx_date
1001 14.50 10024 20-12-2018
1001 14.50 10024 20-12-2018
1002 21.30 22444 10-10-2018
1003 11.10 516 05-10-2018
1002 -21.30 22444 23-10-2018
1005 5.50 1800 01-09-2018
1006 8.30 4221 01-09-2018
1003 -11.10 516 06-10-2018
neg_gross_sales = trx.gross_sales[trx.gross_sales < 0]
pos_gross_sales = trx.gross_sales[trx.gross_sales > 0]
matching_vals = []
for i in trx['member_id'].unique():
for j in trx['gross_sales']:
if j in abs(neg_gross_sales):
if j in abs(pos_gross_sales):
matching_vals.append(j)
else:
continue
else:
continue
print (matching_vals)
Я хочу получить вывод чтобы выглядеть так
product key gross_sales member_id trx_date
1002 21.30 22444 10-10-2018
1002 -21.30 22444 23-10-2018
1003 11.10 516 05-10-2018
1003 -11.10 516 06-10-2018
Интересно, что-то не так с моим кодом или есть лучший способ сделать это, благодарю за любую помощь, спасибо!