Сравнение трехкратного набора данных (неравного) для заполнения значений - PullRequest
0 голосов
/ 23 февраля 2020

Справочная информация. То, что я пытаюсь выполнить sh, - это найти, если "наблюдаемое время" находится между двумя другими временами "slice_begin_time" и "slice_end_time" (12 - 5 минутных срезов в час). В настоящее время это занимает около минуты, чтобы сделать 24-36 часов. Я хочу посмотреть, есть ли другой способ установить это, который сократит количество времени и два цикла for для сравнения наборов данных. Может быть pandas?

Сейчас я отправляю "наблюдаемое время" через a для l oop и другое для l oop, чтобы сравнить оба набора данных до следующего "наблюдаемого времени" с "временем начала среза" "и" время окончания среза ".

Таким образом, каждый 5-минутный срез между '2020-02-20T15: 54: 00Z' и '2020-02-20T16: 54: 00Z' будет иметь соответственно 1 и 2 наблюдаемых_var_01 и заметил_вар_02. Смотрите код ниже.

Example Data: 
observed_time = ['2020-02-20T15:54:00Z', '2020-02-20T16:54:00Z']
observed_var_01 = [1,1]
observed_var_02 = [2,2]

slice_begin_time=['2020-02-20T15:50:00Z', '2020-02-20T15:55:00Z', '2020-02-20T16:00:00Z', '2020-02-20T16:05:00Z', '2020-02-20T16:10:00Z','2020-02-20T16:15:00Z', '2020-02-20T16:20:00Z', '2020-02-20T16:25:00Z', '2020-02-20T16:30:00Z', '2020-02-20T16:35:00Z','2020-02-20T16:40:00Z', '2020-02-20T16:45:00Z', '2020-02-20T16:50:00Z', '2020-02-20T16:55:00Z']

slice_end_time=['2020-02-20T15:55:00Z', '2020-02-20T16:00:00Z', '2020-02-20T16:05:00Z', '2020-02-20T16:10:00Z', '2020-02-20T16:15:00Z', '2020-02-20T16:20:00Z', '2020-02-20T16:25:00Z', '2020-02-20T16:30:00Z', '2020-02-20T16:35:00Z', '2020-02-20T16:40:00Z', '2020-02-20T16:45:00Z', '2020-02-20T16:50:00Z', '2020-02-20T16:55:00Z','2020-02-20T17:00:00Z']


### LIBS
from datetime import datetime,timedelta
from dateutil import parser

results01 = []
results02 = []
results03 = []
results04 = []

for i in range(len(observed_time)-1):
    for k in range(len(slice_begin_time)):
        if parser.parse(str(observed_time[i+1]))<parser.parse(str(slice_end_time[k])) and parser.parse(str(observed_time[i]))>=parser.parse(str(slice_begin_time[k])):
           results01.append(slice_begin_time[k])
           results02.append(slice_end_time[k])
           results03.append(observed_var_01[i])
           results04.append(observed_var_02[i])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...