Order categories¶
(Re-)order the categories of a categorical column.
The output, if transformation is successful, will always be an ordinal (ordered category
) column,
even if the input was an unordered category
or not a Category
at all. I.e. it is supposed
that re-ordering the categories means the order is important.
If the input column is already a category
:
- If unordered (non-ordinal): categories will be ordered in the given order (converted to ordinal)
- If ordered (ordinal): categories will be re-ordered only
In both cases, the specified categories have to match the ones already existing. I.e. only re-ordering is allowed, but not deletion or addition of new categories.
If the column is not already a category
:
- the column will be converted if the param
force_categorical
istrue
, and ordered as desired. Otherwise the new column will be identical to the input (no ordering performed).
Usage¶
The following are the step's expected inputs and outputs and their specific types.
order_categories(input: column, {"param": value}) -> (output: column)
where the object {"param": value}
is optional in most cases and if present may contain any of the parameters described in the
corresponding section below.
Example¶
To arrange the categories "small", "medium", "large" ("S", "M", "L") in reverser order:
order_categories(ds.cat_col, {"categories": ["L", "M", "S"]} -> (ds.ordinal)
More examples
Converting a text column containing the strings "low", "medium" and "high" to an ordinal column:
order_categories(ds.text, {
"categories": ["low", "medium", "high"],
"force_categorical": true
} -> (ds.ordinal)
Inputs¶
input: column
A column to re-order or convert to ordinal (ordered category
).
Outputs¶
output: column
An ordinal column.
Parameters¶
categories: array | null
List with desired order of categories. If null
, the unique and lexicographically sorted existing values in the input column will be used.
force_categorical: boolean = True
Whether to convert non-categorical input columns to category
before ordering (otherwise will be unchanged).