lib/polars/cat_expr.rb in polars-df-0.1.2 vs lib/polars/cat_expr.rb in polars-df-0.1.3
- old
+ new
@@ -1,12 +1,51 @@
module Polars
+ # Namespace for categorical related expressions.
class CatExpr
+ # @private
attr_accessor :_rbexpr
+ # @private
def initialize(expr)
self._rbexpr = expr._rbexpr
end
+ # Determine how this categorical series should be sorted.
+ #
+ # @param ordering ["physical", "lexical"]
+ # Ordering type:
+ #
+ # - 'physical' -> Use the physical representation of the categories to determine the order (default).
+ # - 'lexical' -> Use the string values to determine the ordering.
+ #
+ # @return [Expr]
+ #
+ # @example
+ # df = Polars::DataFrame.new(
+ # {"cats" => ["z", "z", "k", "a", "b"], "vals" => [3, 1, 2, 2, 3]}
+ # ).with_columns(
+ # [
+ # Polars.col("cats").cast(:cat).cat.set_ordering("lexical")
+ # ]
+ # )
+ # df.sort(["cats", "vals"])
+ # # =>
+ # # shape: (5, 2)
+ # # ┌──────┬──────┐
+ # # │ cats ┆ vals │
+ # # │ --- ┆ --- │
+ # # │ cat ┆ i64 │
+ # # ╞══════╪══════╡
+ # # │ a ┆ 2 │
+ # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┤
+ # # │ b ┆ 3 │
+ # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┤
+ # # │ k ┆ 2 │
+ # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┤
+ # # │ z ┆ 1 │
+ # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┤
+ # # │ z ┆ 3 │
+ # # └──────┴──────┘
def set_ordering(ordering)
Utils.wrap_expr(_rbexpr.cat_set_ordering(ordering))
end
end
end