def make_coordinates(df, index_col='index'):
    """
    Formats a geopandas.GeoDataFrame (from a shapefile that contains
    junction information) to a coordinate table.

    Parameters
    ----------
    catchments : geopandas.GeoDataFrame
        Must contain a geometry field with points.

    index_col : str
        Column to use for the index of the resulting frame. Will default
        to 'index' if no index provided.
    """
    return (
        df.reset_index()
            .set_index(index_col)
            .assign(X_Coord=lambda df: df.geometry.apply(lambda x: x.coords[0][0]),
                    Y_Coord=lambda df: df.geometry.apply(lambda x: x.coords[0][1]))
            .loc[:, ['X_Coord', 'Y_Coord']]
    )