@@ -109,17 +109,13 @@ def order_blocks(ctx, pid, cid):
109109 edge_select = select ([edge_table ])
110110 edge_sequence = pd .read_sql (edge_select , con = ctx .obj ['dest_db' ])
111111
112- # group the blocks by the child geo ID
113- logger .debug (f"Grouping blocks by { pid } and { cid } " )
114- grouped = edge_sequence .groupby ([pid , cid ], sort = True )
115-
116112 # calculate the block order
117113 logger .debug ("Calculating the block order" )
118- edge_sequence [ 'block_order' ] = grouped . ngroup () + 1
114+ edge_sequence = edge_sequence . groupby ( pid , sort = True ). apply ( sub_block_order , { key : cid })
119115
120116 # calculate the edge order within the blocks
121117 logger .debug ("Calculating edge order" )
122- edge_sequence ['edge_order' ] = grouped .cumcount ()+ 1
118+ edge_sequence ['edge_order' ] = edge_sequence . groupby ([ pid , cid ], sort = True ) .cumcount ()+ 1
123119
124120 # calculate the chain ID
125121 logger .debug ("Calculating chain ID field" )
@@ -131,6 +127,12 @@ def order_blocks(ctx, pid, cid):
131127
132128 logger .debug ('order_blocks ended' )
133129
130+ def sub_block_order (data , key = 'lb_uid' ):
131+ """Takes a DataFrame grouped by a parent geography and creates an ID number for the order in which they appear."""
132+
133+ grp = data .groupby (key )
134+ data ['block_order' ] = grp .ngroup ()+ 1
135+ return data
134136
135137@click .command ()
136138@click .argument ('pgeo' , envvar = 'SEQ_PARENT_LAYER' )
0 commit comments