У меня есть фрейм данных, где каждая строка представляет отправление поезда, другая, где каждая строка представляет событие, которое, теоретически, происходит каждые 13 секунд (примерно), и ту, которая дает ожидаемую продолжительность поездки для каждого поезда.
Время отправления поездов фактически соответствует сигналу, который обычно посылается каждый раз, когда поезд начинает свое движение. Однако из-за некоторых технических проблем сигнал отправления может быть отправлен даже после отправления.
Моя цель - подсчитать количество событий для каждой поездки. В результате должен появиться новый столбец, в котором для каждого поезда подсчитывается количество событий, произошедших во время данного путешествия.
Проблема в том, что у меня нет действующей даты прибытия, поэтому я хочу приблизить ее добавив ожидаемую продолжительность поездки ко времени вылета.
наборы данных выглядят так
trainDF = pd.DataFrame({
'train': ['a', 'b', 'c', 'b', 'c', 'a', 'd', 'e', 'b'],
'date': ['day1', 'day1', 'day3', 'day1', 'day4', 'day1', 'day5', 'day5', 'day1'],
'startTime': ['07:14:00', '08:29:12', '23:19:32', '09:02:13', '19:29:52', '17:26:32', '07:27:34', '02:33:26', '19:03:53']
})
trainDF
train date startTime
0 a day1 07:14:00
1 b day1 08:29:12
2 c day3 23:19:32
3 b day1 09:02:13
4 c day4 19:29:52
5 a day1 17:26:32
6 d day5 07:27:34
7 e day5 02:33:26
8 b day1 19:03:53
eventDF = pd.DataFrame({
'train': ['a', 'b', 'c', 'b', 'c', 'a', 'd', 'e', 'b'],
'date': ['day1', 'day1', 'day3', 'day1', 'day4', 'day1', 'day5', 'day5', 'day1'],
'eventTime': ['07:14:26', '08:29:25', '23:19:45', '09:02:26', '19:32:02', '17:37:34', '07:57:28', '02:42:21', '19:15:33']
})
eventDF
train date eventTime
0 a day1 07:14:26
1 b day1 08:29:25
2 c day3 23:19:45
3 b day1 09:02:26
4 c day4 19:32:02
5 a day1 17:37:34
6 d day5 07:57:28
7 e day5 02:42:21
8 b day1 19:15:33
getTravelDuration = pd.DataFrame({
'train': ['a', 'b', 'c'],
'travelDuration': ['01:00:00', '2:04:05', '01:30:00']
})
getTravelDuration
train travelDuration
0 a 01:00:00
1 b 2:04:05
2 c 01:30:00
Мой результат должен выглядеть следующим образом
resultDF = pd.DataFrame({
'train' : ['a', 'b', 'c', 'c', 'a', 'd', 'e', 'b'],
'date': ['day1', 'day1', 'day3', 'day4', 'day1', 'day5', 'day5', 'day1'],
'startTime': ['07:14:00', '08:29:12', '23:19:32', '19:29:52', '17:26:32', '07:27:34', '02:33:26', '19:03:53'],
'eventCount': [1, 2, 1, 1, 1, 1, 1, 1]
})
resultDF
train date startTime eventCount
0 a day1 07:14:00 1
1 b day1 08:29:12 2
2 c day3 23:19:32 1
3 c day4 19:29:52 1
4 a day1 17:26:32 1
5 d day5 07:27:34 1
6 e day5 02:33:26 1
7 b day1 19:03:53 1
Теперь у меня есть кадр данных, где каждая строка представляет поездку (и отправку поездки) ) данного поезда (с удаленными ошибочными рядами отправления времени).
Я думаю, что я должен использовать условные суставы, но я уже посмотрел на Как сделать условное соединение в python Pandas? но мне все еще не удалось это сделать.