Вы можете сделать это следующим образом
df.groupby(['stop_code','stop_name'],sort=False)['route'].agg(list).reset_index()
Вывод
stop_code stop_name route
0 92072 Eastbound @ 257 Kingston Road East [900]
1 1590 Kingston Westbound @ Wicks [900]
2 2218 Kingston Eastbound @ Wicks [900]
3 93152 Salem Northbound @ Kingston [900, 215]
4 728 Kingston Rd. @ Salem Rd. [92]
5 92071 Salem Southbound @ Twilley [224, 215]
6 92054 Northbound @ 133 Salem [215, 224]
Если вы хотите точно так же, как и в ожидаемом результате, сделайте, как показано ниже. Однако это, вероятно, будет медленнее.
df.groupby(['stop_code','stop_name'],sort=False)['route'].apply(lambda x: ','.join([str(a) for a in x])).reset_index()
Вывод
stop_code stop_name route
0 92072 Eastbound @ 257 Kingston Road East 900
1 1590 Kingston Westbound @ Wicks 900
2 2218 Kingston Eastbound @ Wicks 900
3 93152 Salem Northbound @ Kingston 900,215
4 728 Kingston Rd. @ Salem Rd. 92
5 92071 Salem Southbound @ Twilley 224,215
6 92054 Northbound @ 133 Salem 215,224