def argsort_by(exprs: tp.List["pl.Expr"], reverse: Union[tp.List[bool], bool] = False) -> "pl.Expr": """ Find the indexes that would sort the columns. Argsort by multiple columns. The first column will be used for the ordering. If there are duplicates in the first column, the second column will be used to determine the ordering and so on. Parameters ---------- exprs Columns use to determine the ordering. reverse Default is ascending. """ if not isinstance(reverse, list): reverse = [reverse] exprs = pl.lazy.expr._selection_to_pyexpr_list(exprs) return pl.lazy.expr.wrap_expr(pyargsort_by(exprs, reverse))
def argsort_by( exprs: pli.Expr | str | Sequence[pli.Expr | str], reverse: list[bool] | bool = False, ) -> pli.Expr: """ Find the indexes that would sort the columns. Argsort by multiple columns. The first column will be used for the ordering. If there are duplicates in the first column, the second column will be used to determine the ordering and so on. Parameters ---------- exprs Columns use to determine the ordering. reverse Default is ascending. """ if isinstance(exprs, str) or not isinstance(exprs, Sequence): exprs = [exprs] if isinstance(reverse, bool): reverse = [reverse] * len(exprs) exprs = pli.selection_to_pyexpr_list(exprs) return pli.wrap_expr(pyargsort_by(exprs, reverse))
def argsort_by( exprs: Union[Union["pli.Expr", str], Sequence[Union["pli.Expr", str]]], reverse: Union[List[bool], bool] = False, ) -> "pli.Expr": """ Find the indexes that would sort the columns. Argsort by multiple columns. The first column will be used for the ordering. If there are duplicates in the first column, the second column will be used to determine the ordering and so on. Parameters ---------- exprs Columns use to determine the ordering. reverse Default is ascending. """ if not isinstance(exprs, list): exprs = [exprs] # type: ignore if not isinstance(reverse, list): reverse = [reverse] * len(exprs) exprs = pli.selection_to_pyexpr_list(exprs) return pli.wrap_expr(pyargsort_by(exprs, reverse))