flatten_columns

pyhelpers.ops.flatten_columns(columns, ignore_linear_level=False)[source]

Flattens multi-level column names into single-level strings.

This function processes column names (either as tuples or lists of strings) by joining them with underscores; optionally, it simplifies column names when they represent linear hierarchies.

Parameters:
  • columns (Iterable[Sequence[str]]) – Iterable of multi-level column names (each column is a sequence of strings).

  • ignore_linear_level (bool) – If ignore_linear_level=True, the function simplifies linear hierarchies by omitting single-child levels; defaults to False.

Returns:

List of flattened column names.

Return type:

List[str]

Note

  • For MultiIndex columns, passes the result of df.columns.tolist().

  • When ignore_linear_level=True, parent levels with only one child are collapsed.

  • Preserves original order of columns.

Examples:

>>> from pyhelpers.ops import flatten_columns
>>> flatten_columns([('A', 'B'), ('A', 'C')])
['A_B', 'A_C']
>>> flatten_columns([('A', 'B', 'C'), ('A', 'B', 'D')], ignore_linear_level=True)
['A_B_C', 'A_B_D']
>>> flatten_columns([('A', 'C'), ('B', 'C')], ignore_linear_level=True)
['A', 'B']
>>> flatten_columns([('A',), ('B', 'C')], ignore_linear_level=True)
['A', 'B']