def sort_values(self, by: Union[(Name, List[Name])], ascending: Union[(bool, List[bool])]=True, inplace: bool=False, na_position: str='last', ignore_index: bool=False) -> Optional['DataFrame']:
    "\n        Sort by the values along either axis.\n\n        Parameters\n        ----------\n        by : str or list of str\n        ascending : bool or list of bool, default True\n             Sort ascending vs. descending. Specify list for multiple sort\n             orders.  If this is a list of bools, must match the length of\n             the by.\n        inplace : bool, default False\n             if True, perform operation in-place\n        na_position : {'first', 'last'}, default 'last'\n             `first` puts NaNs at the beginning, `last` puts NaNs at the end\n        ignore_index : bool, default False\n            If True, the resulting axis will be labeled 0, 1, …, n - 1.\n\n        Returns\n        -------\n        sorted_obj : DataFrame\n\n        Examples\n        --------\n        >>> df = ps.DataFrame({\n        ...     'col1': ['A', 'B', None, 'D', 'C'],\n        ...     'col2': [2, 9, 8, 7, 4],\n        ...     'col3': [0, 9, 4, 2, 3],\n        ...   },\n        ...   columns=['col1', 'col2', 'col3'],\n        ...   index=['a', 'b', 'c', 'd', 'e'])\n        >>> df\n           col1  col2  col3\n        a     A     2     0\n        b     B     9     9\n        c  None     8     4\n        d     D     7     2\n        e     C     4     3\n\n        Sort by col1\n\n        >>> df.sort_values(by=['col1'])\n           col1  col2  col3\n        a     A     2     0\n        b     B     9     9\n        e     C     4     3\n        d     D     7     2\n        c  None     8     4\n\n        Ignore index for the resulting axis\n\n        >>> df.sort_values(by=['col1'], ignore_index=True)\n           col1  col2  col3\n        0     A     2     0\n        1     B     9     9\n        2     C     4     3\n        3     D     7     2\n        4  None     8     4\n\n        Sort Descending\n\n        >>> df.sort_values(by='col1', ascending=False)\n           col1  col2  col3\n        d     D     7     2\n        e     C     4     3\n        b     B     9     9\n        a     A     2     0\n        c  None     8     4\n\n        Sort by multiple columns\n\n        >>> df = ps.DataFrame({\n        ...     'col1': ['A', 'A', 'B', None, 'D', 'C'],\n        ...     'col2': [2, 1, 9, 8, 7, 4],\n        ...     'col3': [0, 1, 9, 4, 2, 3],\n        ...   },\n        ...   columns=['col1', 'col2', 'col3'])\n        >>> df.sort_values(by=['col1', 'col2'])\n           col1  col2  col3\n        1     A     1     1\n        0     A     2     0\n        2     B     9     9\n        5     C     4     3\n        4     D     7     2\n        3  None     8     4\n        "
    inplace = validate_bool_kwarg(inplace, 'inplace')
    new_by = self._prepare_sort_by_scols(by)
    psdf = self._sort(by=new_by, ascending=ascending, na_position=na_position)
    if inplace:
        if ignore_index:
            psdf.reset_index(drop=True, inplace=inplace)
        self._update_internal_frame(psdf._internal)
        return None
    else:
        return (psdf.reset_index(drop=True) if ignore_index else psdf)
Sort by the values along either axis.

Parameters
----------
by : str or list of str
ascending : bool or list of bool, default True
     Sort ascending vs. descending. Specify list for multiple sort
     orders.  If this is a list of bools, must match the length of
     the by.
inplace : bool, default False
     if True, perform operation in-place
na_position : {'first', 'last'}, default 'last'
     `first` puts NaNs at the beginning, `last` puts NaNs at the end
ignore_index : bool, default False
    If True, the resulting axis will be labeled 0, 1, …, n - 1.

Returns
-------
sorted_obj : DataFrame

Examples
--------
>>> df = ps.DataFrame({
...     'col1': ['A', 'B', None, 'D', 'C'],
...     'col2': [2, 9, 8, 7, 4],
...     'col3': [0, 9, 4, 2, 3],
...   },
...   columns=['col1', 'col2', 'col3'],
...   index=['a', 'b', 'c', 'd', 'e'])
>>> df
   col1  col2  col3
a     A     2     0
b     B     9     9
c  None     8     4
d     D     7     2
e     C     4     3

Sort by col1

>>> df.sort_values(by=['col1'])
   col1  col2  col3
a     A     2     0
b     B     9     9
e     C     4     3
d     D     7     2
c  None     8     4

Ignore index for the resulting axis

>>> df.sort_values(by=['col1'], ignore_index=True)
   col1  col2  col3
0     A     2     0
1     B     9     9
2     C     4     3
3     D     7     2
4  None     8     4

Sort Descending

>>> df.sort_values(by='col1', ascending=False)
   col1  col2  col3
d     D     7     2
e     C     4     3
b     B     9     9
a     A     2     0
c  None     8     4

Sort by multiple columns

>>> df = ps.DataFrame({
...     'col1': ['A', 'A', 'B', None, 'D', 'C'],
...     'col2': [2, 1, 9, 8, 7, 4],
...     'col3': [0, 1, 9, 4, 2, 3],
...   },
...   columns=['col1', 'col2', 'col3'])
>>> df.sort_values(by=['col1', 'col2'])
   col1  col2  col3
1     A     1     1
0     A     2     0
2     B     9     9
5     C     4     3
4     D     7     2
3  None     8     4
def sort_values(self, by: Union[(Name, List[Name])], ascending: Union[(bool, List[bool])]=True, inplace: bool=False, na_position: str='last', ignore_index: bool=False) -> Optional['DataFrame']:
    "\n        Sort by the values along either axis.\n\n        Parameters\n        ----------\n        by : str or list of str\n        ascending : bool or list of bool, default True\n             Sort ascending vs. descending. Specify list for multiple sort\n             orders.  If this is a list of bools, must match the length of\n             the by.\n        inplace : bool, default False\n             if True, perform operation in-place\n        na_position : {'first', 'last'}, default 'last'\n             `first` puts NaNs at the beginning, `last` puts NaNs at the end\n        ignore_index : bool, default False\n            If True, the resulting axis will be labeled 0, 1, …, n - 1.\n\n        Returns\n        -------\n        sorted_obj : DataFrame\n\n        Examples\n        --------\n        >>> df = ps.DataFrame({\n        ...     'col1': ['A', 'B', None, 'D', 'C'],\n        ...     'col2': [2, 9, 8, 7, 4],\n        ...     'col3': [0, 9, 4, 2, 3],\n        ...   },\n        ...   columns=['col1', 'col2', 'col3'],\n        ...   index=['a', 'b', 'c', 'd', 'e'])\n        >>> df\n           col1  col2  col3\n        a     A     2     0\n        b     B     9     9\n        c  None     8     4\n        d     D     7     2\n        e     C     4     3\n\n        Sort by col1\n\n        >>> df.sort_values(by=['col1'])\n           col1  col2  col3\n        a     A     2     0\n        b     B     9     9\n        e     C     4     3\n        d     D     7     2\n        c  None     8     4\n\n        Ignore index for the resulting axis\n\n        >>> df.sort_values(by=['col1'], ignore_index=True)\n           col1  col2  col3\n        0     A     2     0\n        1     B     9     9\n        2     C     4     3\n        3     D     7     2\n        4  None     8     4\n\n        Sort Descending\n\n        >>> df.sort_values(by='col1', ascending=False)\n           col1  col2  col3\n        d     D     7     2\n        e     C     4     3\n        b     B     9     9\n        a     A     2     0\n        c  None     8     4\n\n        Sort by multiple columns\n\n        >>> df = ps.DataFrame({\n        ...     'col1': ['A', 'A', 'B', None, 'D', 'C'],\n        ...     'col2': [2, 1, 9, 8, 7, 4],\n        ...     'col3': [0, 1, 9, 4, 2, 3],\n        ...   },\n        ...   columns=['col1', 'col2', 'col3'])\n        >>> df.sort_values(by=['col1', 'col2'])\n           col1  col2  col3\n        1     A     1     1\n        0     A     2     0\n        2     B     9     9\n        5     C     4     3\n        4     D     7     2\n        3  None     8     4\n        "
    inplace = validate_bool_kwarg(inplace, 'inplace')
    new_by = self._prepare_sort_by_scols(by)
    psdf = self._sort(by=new_by, ascending=ascending, na_position=na_position)
    if inplace:
        if ignore_index:
            psdf.reset_index(drop=True, inplace=inplace)
        self._update_internal_frame(psdf._internal)
        return None
    else:
        return (psdf.reset_index(drop=True) if ignore_index else psdf)