def _sort_categories_by_value()

in chartify/_core/plot.py [0:0]


    def _sort_categories_by_value(source, categorical_columns, categorical_order_ascending):
        # Recursively sort values within each level of the index.
        row_totals = source.sum(axis=1, numeric_only=True)
        row_totals.name = "sum"
        old_index = row_totals.index
        row_totals = row_totals.reset_index()
        row_totals.columns = ["_%s" % col for col in row_totals.columns]
        row_totals.index = old_index

        hierarchical_sort_cols = categorical_columns[:]
        for i, _ in enumerate(hierarchical_sort_cols):
            row_totals["level_%s" % i] = row_totals.groupby(hierarchical_sort_cols[: i + 1])["_sum"].transform("sum")
        row_totals = row_totals.sort_values(
            by=["level_%s" % i for i, _ in enumerate(hierarchical_sort_cols)],
            ascending=categorical_order_ascending,
        )
        return source.reindex(row_totals.index)