From f6c7c94e0880b2d29ce61c1ef64d67e12a19640e Mon Sep 17 00:00:00 2001 From: Lisa Zorn Date: Tue, 25 Apr 2017 18:18:39 -0700 Subject: [PATCH] Issue #56: Handle missing not required fields in transfers.txt and transfers_ft.txt --- fasttrips/Transfer.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/fasttrips/Transfer.py b/fasttrips/Transfer.py index ade0e643..2caa254d 100644 --- a/fasttrips/Transfer.py +++ b/fasttrips/Transfer.py @@ -158,6 +158,11 @@ def __init__(self, input_dir, output_dir, gtfs_schedule): Transfer.TRANSFERS_COLUMN_STOP_TO_STOP:False}, inplace=True) + if Transfer.TRANSFERS_COLUMN_FROM_ROUTE not in self.transfers_df.columns.values: + self.transfers_df[Transfer.TRANSFERS_COLUMN_FROM_ROUTE] = None + if Transfer.TRANSFERS_COLUMN_TO_ROUTE not in self.transfers_df.columns.values: + self.transfers_df[Transfer.TRANSFERS_COLUMN_TO_ROUTE] = None + # support BOTH TRANSFERS_COLUMN_FROM_ROUTE and TRANSFERS_COLUMN_TO_ROUTE but not one one_route_specified_df = self.transfers_df.loc[ self.transfers_df[Transfer.TRANSFERS_COLUMN_FROM_ROUTE].notnull()^ self.transfers_df[Transfer.TRANSFERS_COLUMN_TO_ROUTE].notnull() ] @@ -380,15 +385,17 @@ def write_transfers_for_extension(self): transfers_df = transfers_df.loc[transfers_df[Transfer.TRANSFERS_COLUMN_TRANSFER_TYPE] != 3] # drop some of the attributes - transfers_df.drop([Transfer.TRANSFERS_COLUMN_TIME, # use numerical version - Transfer.TRANSFERS_COLUMN_FROM_STOP, # use numerical version - Transfer.TRANSFERS_COLUMN_TO_STOP, # use numerical version - Transfer.TRANSFERS_COLUMN_MIN_TRANSFER_TIME, # minute version is sufficient - Transfer.TRANSFERS_COLUMN_SCHEDULE_PRECEDENCE, # don't know what to do with this - Transfer.TRANSFERS_COLUMN_STOP_TO_STOP, # not needed - Transfer.TRANSFERS_COLUMN_FROM_ROUTE, # TODO? - Transfer.TRANSFERS_COLUMN_TO_ROUTE # TODO? - ], axis=1, inplace=True) + drop_attrs = [Transfer.TRANSFERS_COLUMN_TIME, # use numerical version + Transfer.TRANSFERS_COLUMN_FROM_STOP, # use numerical version + Transfer.TRANSFERS_COLUMN_TO_STOP, # use numerical version + Transfer.TRANSFERS_COLUMN_MIN_TRANSFER_TIME, # minute version is sufficient + Transfer.TRANSFERS_COLUMN_SCHEDULE_PRECEDENCE, # don't know what to do with this + Transfer.TRANSFERS_COLUMN_STOP_TO_STOP, # not needed + Transfer.TRANSFERS_COLUMN_FROM_ROUTE, # TODO? + Transfer.TRANSFERS_COLUMN_TO_ROUTE # TODO? + ] + keep_attrs = set(list(transfers_df.columns.values)) - set(drop_attrs) + transfers_df = transfers_df[list(keep_attrs)] # transfers time_min is really walk_time_min transfers_df["walk_time_min"] = transfers_df[Transfer.TRANSFERS_COLUMN_TIME_MIN]