как узнать, находится ли дата и время между началом и концом другого фрейма данных в пандах - PullRequest
0 голосов
/ 23 сентября 2018

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

   df   
   code    start_time          end_time             start    end     flag
   0      2018-08-01 06:30:00  2018-08-01 06:40:00  123      145     0
   1      2018-08-01 06:40:00  2018-08-01 06:50:00  145      150     0
   2      2018-08-01 07:10:00  2018-08-01 07:20:00  155      160     1

  df1
  code   occur_time           Ack_time               Alarm
  0      2018-08-01 06:50:00  2018-08-01 08:00:00    437           
  1      2018-08-01 06:40:00  2018-08-01 07:10:00    430          
  2      2018-08-01 07:10:00  2018-08-01 07:20:00    456      

Я хочу проверить следующее условие: в df датафрейм flag должен быть равен 1, тогда для этой чёрточной строки start_time должен быть между occur_time и Ack_time и Alarm должны быть 437

Мой желаемый кадр данных будет

  df   
  code    start_time          end_time             start  end   flag  manual
  0      2018-08-01 06:30:00  2018-08-01 06:40:00  123    145   0     1
  1      2018-08-01 06:40:00  2018-08-01 06:50:00  145    150   0     0 
  2      2018-08-01 07:10:00  2018-08-01 07:20:00  155    160   1     0

1 Ответ

0 голосов
/ 23 сентября 2018

Попробуйте:

df.loc[:, 'manual'] = (df1.occur_time.between(df.start_time, df.end_time) \
                       & (df1.Alarm == 437) \
                       & df.flag).apply(int)

РЕДАКТИРОВАТЬ: Добавлена ​​проверка флажка также.

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