有条件地加入熊猫数据框

时间:2020-05-19 13:02:53

标签: python pandas numpy join conditional-statements

我有一个数据框,其中每条线代表一列火车的发车,另一条数据中的每条线代表一个事件,从理论上讲,该事件每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?,但我仍然没有做到。

0 个答案:

没有答案