nispace.utils.utils.mean_by_set_df

nispace.utils.utils.mean_by_set_df(df, mean_by_set=True, weighted=True, mean_median='mean')[source]

(Weighted) mean/median aggregation of a DataFrame grouped by a “set” index level.

Plain pandas/numpy (no numba). Used in api.py’s set-aggregation path (aggregating multiple maps within a named “set” of X reference maps into a single representative map). NaN is excluded via np.ma/nanmedian.

Parameters:
  • df (pd.DataFrame) – Must have a “set” level in its index for grouping to take effect, and (if weighted=True) a “weight” level with per-row weights.

  • mean_by_set (bool, default=True) – Group by the “set” index level. Silently disabled (treated as False) if df.index has no “set” level.

  • weighted (bool, default=True) – Weight rows by the “weight” index level. Silently disabled if df.index has no “weight” level.

  • mean_median ({"mean", "median"}, default="mean") – Aggregation statistic. Weighted median is computed via a value-repetition workaround (np.repeat by integer weight), not a true weighted-median algorithm.

Returns:

One row per set (or a single row if mean_by_set=False), indexed by a “map” level.

Return type:

pd.DataFrame

Raises:

ValueError – If df is not a pandas DataFrame.