& (df['DID'] == dir_info.id)] dwell_time = (stop_arrivals['DEPARTURE_TIME'] - stop_arrivals['TIME']) if not stop_arrivals.empty: min_dist_quantiles = np.quantile(stop_arrivals['DIST'], [0, 0.5, 1]) dwell_time_quantiles = np.quantile(dwell_time, [0, 0.5, 1]) else: min_dist_quantiles = [] dwell_time_quantiles = [] num_arrivals = len(stop_arrivals['TIME'].values) dwell_time_str = ', '.join( [util.render_dwell_time(q) for q in dwell_time_quantiles]) min_dist_str = ', '.join([ render_distance(min_dist) for min_dist in min_dist_quantiles ]) print( f"{'%3d' % num_arrivals} arrivals ({dwell_time_str}) ({min_dist_str}) \u0394 {render_distance(delta_dist)} @ {stop_info.id} [{dir_index}] - {stop_info.title}" ) stop_rows.append( (route_id, dir_info.id, stop_id, dir_index, stop_info.lat, stop_info.lon, delta_dist, num_arrivals)) prev_stop_info = stop_info ''' arrivals1 = df[(df['SID'] == '3814')] arrivals2 = df[(df['SID'] == '3813')]
start_time=start_time, end_time=end_time) if df.empty: print(f"no arrival times found for vehicle {vid} on {date_str}") continue df = df.sort_values(['TIME', 'TRIP'], axis=0) df['DATE_TIME'] = df['TIME'].apply( lambda t: datetime.fromtimestamp(t, tz)) for row in df.itertuples(): stop_id = row.SID stop_info = route_config.get_stop_info(stop_id) dir_info = route_config.get_direction_info(row.DID) try: stop_index = dir_info.get_stop_ids().index(stop_id) except ValueError: stop_index = None dwell_time = util.render_dwell_time(row.DEPARTURE_TIME - row.TIME) dist_str = f'{row.DIST}'.rjust(3) print( f"t={row.DATE_TIME.date()} {row.DATE_TIME.time()} ({row.TIME}) {dwell_time} vid:{row.VID} #{row.TRIP} {dist_str}m dir:{row.DID} stop:{stop_id} [{stop_index}] {stop_info.title if stop_info else '?'}" ) num_stops += 1 print(f'num_stops = {num_stops}')