feat: Axis sort in the Bar Chart V2 (#21993)

This commit is contained in:
Yongjie Zhao
2022-11-26 22:06:26 +08:00
committed by GitHub
parent cc2334e58c
commit 22fab5e58c
23 changed files with 349 additions and 167 deletions

View File

@@ -14,22 +14,34 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
from typing import Dict
from typing import List, Optional, Union
from pandas import DataFrame
from superset.utils.pandas_postprocessing.utils import validate_column_args
@validate_column_args("columns")
def sort(df: DataFrame, columns: Dict[str, bool]) -> DataFrame:
# pylint: disable=invalid-name
@validate_column_args("by")
def sort(
df: DataFrame,
is_sort_index: bool = False,
by: Optional[Union[List[str], str]] = None,
ascending: Union[List[bool], bool] = True,
) -> DataFrame:
"""
Sort a DataFrame.
:param df: DataFrame to sort.
:param columns: columns by by which to sort. The key specifies the column name,
value specifies if sorting in ascending order.
:param is_sort_index: Whether by index or value to sort
:param by: Name or list of names to sort by.
:param ascending: Sort ascending or descending.
:return: Sorted DataFrame
:raises InvalidPostProcessingError: If the request in incorrect
"""
return df.sort_values(by=list(columns.keys()), ascending=list(columns.values()))
if not is_sort_index and not by:
return df
if is_sort_index:
return df.sort_index(ascending=ascending)
return df.sort_values(by=by, ascending=ascending)