сравнить две даты в пандах - PullRequest
       0

сравнить две даты в пандах

0 голосов
/ 07 декабря 2018

У меня есть следующие два кадра данных в пандах

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 с правильной ценой.

1 Ответ

0 голосов
/ 07 декабря 2018

Следуя подходу в Объединение двух фреймов данных на основе даты между двумя другими датами без общего столбца ,

Этот подход заключается в:

  1. Создатьдекартово произведение между двумя таблицами путем объединения в поле продукта
  2. Фильтрация строк, где даты не совпадают
  3. Создайте столбец своего флага на основе соответствия строк

Это решение будет неоптимальным для большого числа строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...