def METHOD_NAME(df: pd.DataFrame, regions: Table) -> pd.DataFrame:
    continents = regions[regions["region_type"] == "continent"]["name"].to_list()
    countries_in_regions = {
        region: sorted(set(geo.list_countries_in_region(region)) & set(df["country"])) for region in continents
    }
    df_cont = df
    df_out = pd.DataFrame()
    for continent in continents:
        if continent == "Europe":
            df_cont = geo.add_region_aggregates(
                df=df[["year", "country", "cholera_reported_cases", "cholera_deaths"]],
                region=continent,
                countries_in_region=countries_in_regions[continent] + ["Serbia and Montenegro (former)"],
                countries_that_must_have_data=[],
                num_allowed_nans_per_year=None,
            )
        else:
            df_cont = geo.add_region_aggregates(
                df=df[["year", "country", "cholera_reported_cases", "cholera_deaths"]],
                region=continent,
                countries_in_region=countries_in_regions[continent],
                countries_that_must_have_data=[],
                num_allowed_nans_per_year=200,
                country_col="country",
                year_col="year",
                frac_allowed_nans_per_year=1,
            )
        df_cont = df_cont[df_cont["country"].isin(continents)]
        df_out = pd.concat([df_out, df_cont])
    df_out["cholera_case_fatality_rate"] = (df_out["cholera_deaths"] / df_out["cholera_reported_cases"]) * 100
    df = pd.concat([df, df_out])
    return df