#python #pandas
#питон #панды
Вопрос:
Я ищу решение для присвоения key
значения от dummy
до dummy2
, когда ;
start
столбец отdummy2
, находится во временном диапазонеdummy
начального и конечного столбцов.dummy
иdummy2
имеют одинаковое значение идентификатора.
Однако start
столбик dummy
и dummy2
не совсем маха.
Вот два кадра данных :
dummy = pd.DataFrame({ 'ID' : ['A','B','B','D'], 'start': ['2021-10-28 10:40:00', '2021-10-15 09:20:00', '2021-10-26 09:20:00', '2021-11-04 12:19:00'], 'end': ['2021-10-28 17:46:00', '2021-10-15 15:10:00', '2021-10-26 12:10:00', '2021-11-04 16:25:00'], 'key' : [1,2,3,4] }) dummy2 = pd.DataFrame({ 'ID' : ['A','B','B','D'], 'start': ['2021-10-28 10:39:00', '2021-10-15 09:25:00', '2021-10-26 09:24:00', '2021-11-04 12:18:00'], 'end': ['2021-10-28 17:49:00', '2021-10-15 15:11:00', '2021-10-26 12:13:00', '2021-11-04 16:22:00'], }) dummy.start = pd.to_datetime(dummy.start) dummy.end = pd.to_datetime(dummy.end) dummy2.start = pd.to_datetime(dummy2.start) dummy2.end = pd.to_datetime(dummy2.end)
Это то, что я пробовал :
from datetimerange import DateTimeRange dummy2['key'] = np.nan for z in range(len(dummy)) : time = DateTimeRange(dummy.st[z] - datetime.timedelta(seconds=300), dummy.ed[z] datetime.timedelta(seconds=300)) for i in range(len(dummy2)): if (dummy2['start'][i] in time) amp; (dummy2['ID'][z] == dummy['ID'][i]): dummy2['key'][i] = dummy['key'][z]
- Создано
datetimerange
для манекена и дает и — 5 минут из-за меткиdummy
времени иdummy2
не совсем совпадают - Использование циклов for для определения
start
столбца изdummy2
, находится в диапазоне времени и имеет ли он одинаковое значение идентификатора.
Это мой ожидаемый результат :
dummy2 ID start end key 0 A 2021-10-28 10:39:00 2021-10-28 17:49:00 1 1 B 2021-10-15 09:25:00 2021-10-15 15:11:00 2 2 B 2021-10-26 09:24:00 2021-10-26 12:13:00 3 3 D 2021-11-04 12:18:00 2021-11-04 16:22:00 4
Комментарии:
1. у вас есть дополнительная логика в вашем коде; пожалуйста, добавьте эти условия в свое объяснение