我每天有一条公交线路的数据集,其中有 32 辆公交车和两辆公交车route_direction(0,1)
,在第一个方向有 18 个车站,每个车站有一个从 1 到 18 的序列,另一个方向有 15 个带有 seq(1-15) 的车站并记录时间进入/退出每个车站。每条记录包含 bus_id、route_direction、station_seq、in_time、out_time、station_id。
在此处输入图像描述
route_id route_direction bus_id station_seq schdeule_date in_time out_time
0 59 1 1349508393 2 2021-01-01 05:04:31 05:04:58
1 59 1 1349508393 2 2021-01-01 05:04:27 05:04:58
2 59 1 1349508393 2 2021-01-01 05:04:31 05:06:31
3 59 1 1349508393 2 2021-01-01 05:04:27 05:06:31
4 59 1 1349508393 1 2021-01-01 05:00:35 05:00:56
首先,我尝试对某个列进行分组,以便为每次旅行提供索引:
grouped = df.groupby(['bus_id', 'route_direction'])
我在这张图片中得到类似的东西 在此处输入图片描述:
index route_id route_direction bus_id station_seq schdeule_date in_time out_time
654 59 0 1349508329 1 2021-01-01 NaN 06:34:10
663 59 0 1349508329 2 2021-01-01 06:33:34 06:34:04
664 59 0 1349508329 2 2021-01-01 06:33:33 06:34:04
677 59 0 1349508329 2 2021-01-01 06:33:34 06:35:34
678 59 0 1349508329 2 2021-01-01 06:33:33 06:35:34
... ... ... ... ... ... ... ...
12133 59 0 1349508329 12 2021-01-01 NaN NaN
正如您所看到的,在几乎相同的日期和时间,同一个车站也有相同的 bus_id 进入出口的重复项:我尝试过删除重复项,但运气不好:
df = df.drop_duplicates(subset=['bus_id', 'route_direction', 'station_seq', 'station_id', 'in_time'], keep='first').reset_index(drop=True)
在 in_time 或 out_time 中也有一些 NaN 值,所以如果我 dropna ,那么我可能会错过公交线路沿线车站之一的记录。
在一次旅行中对每条巴士记录进行分组以赋予其 ID 有什么帮助,在这种情况下如何删除重复的记录(进入时间略有不同)?任何帮助将不胜感激。