def pos_points_per_group(
    artifacts, grouper_col, pt_id_col="SurveyPointId", ct_col="Pos. Pts."
):
    """Count the number of points with artifacts in the given group

    Parameters
    ----------
    artifacts : pandas DataFrame
        Artifact observations
    grouper_col : str
        Column in `artifacts` that you want to use to group, usually 'geo_field' or similar
    pt_id_col : str, optional
        Column that contains unique point identifier, usually 'SurveyPointId'
    ct_col : str, optional
        Name to give the new column

    Returns
    -------
    df : pandas DataFrame
        Number of points with artifacts grouped and counted according to the grouper_col
    """
    df = (
        artifacts.groupby([grouper_col, pt_id_col])
        .size()
        .reset_index()
        .set_index(grouper_col)
    )
    df = df.groupby(grouper_col).size().reset_index(name=ct_col).set_index(grouper_col)
    return df