我有一个公交车时刻表,其中包含工作日、每个站点以及公交车到达/离开该站点的相应时间。我希望将每个完整的旅程分成新线路上的多个单独的旅程。我的数据如下所示:
Day Route Leave Garage Stop 1 Stop 2 Stop 3 Stop 4 Stop 5
Monday 01 07:15 07:25 07:31 07:35 07:50 08:15
Monday 01 08:00 08:10 08:16 08:25 08:45 09:12
Tuesday 01 07:15 07:25 07:31 07:35 07:50 08:15
Tuesday 01 08:00 08:10 08:16 08:25 08:45 09:12
Wednesday 01 07:15 07:25 07:31 07:35 07:50 08:15
Wednesday 01 08:00 08:10 08:16 08:25 08:45 09:12
我的预期输出是:
Day Route Origin Time Destination Time
Monday 01 Leave Garage 07:15 Stop 1 07:25
Monday 01 Stop 1 07:25 Stop 2 07:31
Monday 01 Stop 2 07:31 Stop 3 07:35
Monday 01 Stop 3 07:35 Stop 4 07:50
Monday 01 Stop 4 07:50 Stop 5 08:15
Monday 01 Leave Garage 08:00 Stop 1 08:10
Monday 01 Stop 1 08:10 Stop 2 08:16
Monday 01 Stop 2 08:16 Stop 3 08:25
Monday 01 Stop 3 08:25 Stop 4 08:45
Monday 01 Stop 4 08:45 Stop 5 09:12
Tuesday 01 Leave Garage 07:15 Stop 1 07:25
Tuesday 01 Stop 1 07:25 Stop 2 07:31
Tuesday 01 Stop 2 07:31 Stop 3 07:35
Tuesday 01 Stop 3 07:35 Stop 4 07:50
Tuesday 01 Stop 4 07:50 Stop 5 08:15
Tuesday 01 Leave Garage 08:00 Stop 1 08:10
Tuesday 01 Stop 1 08:10 Stop 2 08:16
Tuesday 01 Stop 2 08:16 Stop 3 08:25
Tuesday 01 Stop 3 08:25 Stop 4 08:45
Tuesday 01 Stop 4 08:45 Stop 5 09:12
...
是否有一个循环可以在 pandas 中实现此目的?
非常感谢! - 阿里
最佳答案
让我们尝试基于 numpy
的方法:
s = df.set_index(['Day', 'Route'])
s1, s2 = s.iloc[:, :-1], s.iloc[:, 1:]
df1 = pd.DataFrame({
'Origin': np.tile([*s1], len(s)), 'Time_Orig': np.hstack(s1.values),
'Destination': np.tile([*s2], len(s)), 'Time_Dest': np.hstack(s2.values)},
index=s.index.repeat(s.shape[1] - 1)).reset_index()
Day Route Origin Time_Orig Destination Time_Dest
0 Monday 1 Leave Garage 07:15 Stop 1 07:25
1 Monday 1 Stop 1 07:25 Stop 2 07:31
2 Monday 1 Stop 2 07:31 Stop 3 07:35
3 Monday 1 Stop 3 07:35 Stop 4 07:50
4 Monday 1 Stop 4 07:50 Stop 5 08:15
5 Monday 1 Leave Garage 08:00 Stop 1 08:10
6 Monday 1 Stop 1 08:10 Stop 2 08:16
7 Monday 1 Stop 2 08:16 Stop 3 08:25
8 Monday 1 Stop 3 08:25 Stop 4 08:45
9 Monday 1 Stop 4 08:45 Stop 5 09:12
10 Tuesday 1 Leave Garage 07:15 Stop 1 07:25
11 Tuesday 1 Stop 1 07:25 Stop 2 07:31
12 Tuesday 1 Stop 2 07:31 Stop 3 07:35
13 Tuesday 1 Stop 3 07:35 Stop 4 07:50
14 Tuesday 1 Stop 4 07:50 Stop 5 08:15
15 Tuesday 1 Leave Garage 08:00 Stop 1 08:10
16 Tuesday 1 Stop 1 08:10 Stop 2 08:16
17 Tuesday 1 Stop 2 08:16 Stop 3 08:25
18 Tuesday 1 Stop 3 08:25 Stop 4 08:45
19 Tuesday 1 Stop 4 08:45 Stop 5 09:12
20 Wednesday 1 Leave Garage 07:15 Stop 1 07:25
21 Wednesday 1 Stop 1 07:25 Stop 2 07:31
22 Wednesday 1 Stop 2 07:31 Stop 3 07:35
23 Wednesday 1 Stop 3 07:35 Stop 4 07:50
24 Wednesday 1 Stop 4 07:50 Stop 5 08:15
25 Wednesday 1 Leave Garage 08:00 Stop 1 08:10
26 Wednesday 1 Stop 1 08:10 Stop 2 08:16
27 Wednesday 1 Stop 2 08:16 Stop 3 08:25
28 Wednesday 1 Stop 3 08:25 Stop 4 08:45
29 Wednesday 1 Stop 4 08:45 Stop 5 09:12
关于python - 使用python来分隔列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63882190/