У меня есть следующие два кадра данных в пандах
trans_df
code price date time product
12023 71.23 01-01-2018 06:23:00 MS
12023 61 01-01-2018 07:56:00 HS
12023 71.23 01-01-2018 08:34:00 MS
12023 71.30 01-01-2018 06:03:00 MS
12023 61 01-01-2018 11:43:00 HS
12023 71.23 01-01-2018 10:11:00 MS
12023 71.23 01-01-2018 04:23:00 MS
master_price
code price effective_date_from effective_date_to time_from time_to product
12023 71.23 01-01-2018 02-01-2018 06:00:00 05:59:00 MS
12023 61 01-01-2018 02-01-2018 06:00:00 05:59:00 HS
12023 72.23 01-01-2018 02-01-2018 10:00:00 05:59:00 MS
Мой желаемый кадр данных будет
trans_df
code price date time product flag price
12023 71.23 01-01-2018 06:23:00 MS match 71.23
12023 61 01-01-2018 07:56:00 HS match 61
12023 71.23 01-01-2018 08:34:00 MS match 71.23
12023 71.30 01-01-2018 06:03:00 MS mismatch 71.30
12023 61 01-01-2018 11:43:00 HS match 61
12023 71.23 01-01-2018 10:11:00 MS mismatch 72.23
12023 71.23 01-01-2018 14:23:00 MS mismatch 72.23
Логика есть, я хочу сравнить цену, установленную в trans_df
для MS и HSнаходится в диапазоне даты, времени и цены в master_price
В течение дня возможны два разных изменения цены.
например, в master_price
01-01-2018 в 06:00:00, что составляет 71,23, а следующее изменение цены в 10:00:00, поэтому транзакции происходят с 06:00 до 00:00.: 00 должен взимать цену 72.23
, а после 10:00 она должна быть от 71.23
до effective_date_to
, если мы получим несоответствие цены, тогда мы будем отмечать ее как mismatch
с правильной ценой.