Условное соединение в pandas datafrane - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть фрейм данных, где каждая строка представляет отправление поезда, другая, где каждая строка представляет событие, которое, теоретически, происходит каждые 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? но мне все еще не удалось это сделать.

...