Слияние данных временных рядов в Python с некоторыми перекрывающимися событиями - PullRequest
0 голосов
/ 06 ноября 2019

Я объединяю два независимых данных временных рядов. Один набор данных «df_1» содержит дату события и его продолжительность. Второй кадр данных, озаглавленный «df_2», содержит информацию о конкретном событии, которое происходит (см. Ниже)

. Я хотел бы объединить наборы данных следующим образом (см. Ниже). Если время активации происходит между временем начала и окончания соответствующей даты, объедините эти строки вместе. В противном случае создайте отдельную строку со временем активации и теми же данными.

Примечание. Ни один из них не должен обозначать отсутствующее значение. Мой файл необработанных данных очень большой (1150 строк и 40 столбцов).

import pandas as pd

col1 = [['9/26/2019','10:00:00','12:00:00'], 
        ['9/27/2019','15:30:00','16:45:00'],
        ['9/28/2019','8:30:00','12:32:00'], 
        ['9/29/2019','22:40:00','23:30:00']]
df_1 = pd.DataFrame(col1, columns = ['Date', 'Start_Time','End_Time'])


col2 = [['9/25/2019','Flower','9:33:00'],['9/26/2019','Rose','9:33:00'], 
        ['9/27/2019','River','16:00:00'],
        ['9/27/2019','Tiger','16:15:00'],['9/28/2019','Love','13:00:00'], 
        ['9/29/2019','Dove','22:40:00']]
df_2 = pd.DataFrame(col2, columns = ['Date', 'Object','Activation_Time'])

mergecol = [['9/25/2019',None,None,'Flower','9:33:00'],
            ['9/26/2019',None,None,'Rose','9:33:00'],
            ['9/26/2019','10:00:00','12:00:00',None,None],
            ['9/27/2019','15:30:00','16:45:00','River','16:00:00'],
            ['9/27/2019','15:30:00','16:45:00','Tiger','16:15:00'],
            ['9/28/2019','8:00:00','12:32:00',None,None],
            ['9/28/2019',None,None,'Love','1:00:00'],
            ['9/29/2019','22:40:00','23:30:00','Dove','22:40:00']]

df_merge = pd.DataFrame(mergecol,columns = ['Date', 
            'Start_Time','End_Time','Object','Activation_Time'])

Мой ожидаемый результат может быть найден в 'df_merge' выше для этого примера. Спасибо.

...