def METHOD_NAME(self, df, settings_dict, exog_vars=[]):
    nixtla_df = df.copy()
    # Transform group columns into single unique_id column
    gby = settings_dict["group_by"]
    if len(gby) > 1:
        for col in gby:
            nixtla_df[col] = nixtla_df[col].astype(str)
        nixtla_df["unique_id"] = nixtla_df[gby].agg("/".join, axis=1)
        group_col = "ignore this"
    elif len(gby) == 1:
        group_col = settings_dict["group_by"][0]
    else:
        group_col = '__unique_id'
        nixtla_df[group_col] = '1'
    # Rename columns to statsforecast names
    nixtla_df = nixtla_df.rename(
        {settings_dict["target"]: "y", settings_dict["order_by"]: "ds", group_col: "unique_id"}, axis=1
    )
    columns_to_keep = ["unique_id", "ds", "y"] + exog_vars
    nixtla_df = self._convert_to_iso(nixtla_df, "ds")
    nixtla_df = nixtla_df[columns_to_keep].sort_values(by=['unique_id', 'ds'], ascending=True)  # expects ascending
    nixtla_df['y'] = nixtla_df['y'].astype(float)
    return nixtla_df.reset_index(drop=True)