Shifting (or moving) features is a snap using the arcpy.da module’s UpdateCursor. By modifying the SHAPE@XY token, it modifies the centroid of the feature and shifts the rest of the feature to match. This approach will hold for point, polyline or polygon features.
To modify only a single or subset of features in a feature layer, apply a selection to that layer and pass the layer in as the input to shift_features.
Word of caution, this is using UpdateCursor, so features will be permanently modified. So, back up your data if you may potentially want to reverse the updates.
import arcpy def shift_features(in_features, x_shift=None, y_shift=None): """ Shifts features by an x and/or y value. The shift values are in the units of the in_features coordinate system. Parameters: in_features: string An existing feature class or feature layer. If using a feature layer with a selection, only the selected features will be modified. x_shift: float The distance the x coordinates will be shifted. y_shift: float The distance the y coordinates will be shifted. """ with arcpy.da.UpdateCursor(in_features, ['SHAPE@XY']) as cursor: for row in cursor: cursor.updateRow([[row + (x_shift or 0), row + (y_shift or 0)]]) return