我有一个数据框,其中每条线代表一列火车的发车,另一条数据中的每条线代表一个事件,从理论上讲,该事件每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
我现在有了一个数据框,其中的每一行代表给定火车的行进(和行进出发)(删除了错误的时间出发行)。
我认为我应该使用条件关节,但我已经看过How to do a conditional join in python Pandas?,但我仍然没有做到。