This can be a bit tricky with polylines as the z-values of each vertice are not immediately accessible through the shape field. You will need to access the polyline geometry object (Shape field) with `SHAPE@` and drill down further to get to each point in the polyline geometry. Here is a `python` and `arcpy` code snippet for how to access the z-values of the vertices of a specific line in a polyline feature class. id_field = 'TARGET_FID' #field identifies which features need to be shifted id_value = 12 #value in id_field that identifies specific feature that needs to be shifted shift_value = 2 with arcpy.da.UpdateCursor("Breaklines", ['SHAPE@', id_field]) as u_cur: for row in u_cur: if row[1] == d_value: geometry = row[0] pts = geom.getPart(0) #get polyline geometry pt_array = arcpy.Array() #create array to house new points for pt in pts: pnt.Z += shift_value #shift z value pt_array.add(pt) #add point to array new_polyline_geometry = arcpy.Polyline(pt_array, None, True) #important to enable z-value by having the third parameter set to True row[0] = new_polyline_geometry #set row[0] which is SHAPE@ (geometry object) u_cur.updateRow(row) In a nut shell: - loop over the vertices of the polyline geometry - update each z value of the point geometry - add the updated point to an array - once all points in the polyline have been adjusted: - create a new polyline geometry with the point array, making sure to set it to z-enabled - then update the old polyline geometry with the newly created geometry