def sort_values(self, by=None, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last'):
    "\n        Sort by the values along either axis.\n\n        Parameters\n        ----------%(optional_by)s\n        axis : %(axes_single_arg)s, default 0\n             Axis to be sorted.\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        kind : {'quicksort', 'mergesort', 'heapsort'}, default 'quicksort'\n             Choice of sorting algorithm. See also ndarray.np.sort for more\n             information.  `mergesort` is the only stable algorithm. For\n             DataFrames, this option is only applied when sorting on a single\n             column or label.\n        na_position : {'first', 'last'}, default 'last'\n             Puts NaNs at the beginning if `first`; `last` puts NaNs at the\n             end.\n\n        Returns\n        -------\n        sorted_obj : DataFrame or None\n            DataFrame with sorted values if inplace=False, None otherwise.\n\n        Examples\n        --------\n        >>> df = pd.DataFrame({\n        ...     'col1': ['A', 'A', 'B', np.nan, 'D', 'C'],\n        ...     'col2': [2, 1, 9, 8, 7, 4],\n        ...     'col3': [0, 1, 9, 4, 2, 3],\n        ... })\n        >>> df\n            col1 col2 col3\n        0   A    2    0\n        1   A    1    1\n        2   B    9    9\n        3   NaN  8    4\n        4   D    7    2\n        5   C    4    3\n\n        Sort by col1\n\n        >>> df.sort_values(by=['col1'])\n            col1 col2 col3\n        0   A    2    0\n        1   A    1    1\n        2   B    9    9\n        5   C    4    3\n        4   D    7    2\n        3   NaN  8    4\n\n        Sort by multiple columns\n\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   NaN  8    4\n\n        Sort Descending\n\n        >>> df.sort_values(by='col1', ascending=False)\n            col1 col2 col3\n        4   D    7    2\n        5   C    4    3\n        2   B    9    9\n        0   A    2    0\n        1   A    1    1\n        3   NaN  8    4\n\n        Putting NAs first\n\n        >>> df.sort_values(by='col1', ascending=False, na_position='first')\n            col1 col2 col3\n        3   NaN  8    4\n        4   D    7    2\n        5   C    4    3\n        2   B    9    9\n        0   A    2    0\n        1   A    1    1\n        "
    raise NotImplementedError('sort_values has not been implemented on Panel or Panel4D objects.')
Sort by the values along either axis.

Parameters
----------%(optional_by)s
axis : %(axes_single_arg)s, default 0
     Axis to be sorted.
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.
kind : {'quicksort', 'mergesort', 'heapsort'}, default 'quicksort'
     Choice of sorting algorithm. See also ndarray.np.sort for more
     information.  `mergesort` is the only stable algorithm. For
     DataFrames, this option is only applied when sorting on a single
     column or label.
na_position : {'first', 'last'}, default 'last'
     Puts NaNs at the beginning if `first`; `last` puts NaNs at the
     end.

Returns
-------
sorted_obj : DataFrame or None
    DataFrame with sorted values if inplace=False, None otherwise.

Examples
--------
>>> df = pd.DataFrame({
...     'col1': ['A', 'A', 'B', np.nan, 'D', 'C'],
...     'col2': [2, 1, 9, 8, 7, 4],
...     'col3': [0, 1, 9, 4, 2, 3],
... })
>>> df
    col1 col2 col3
0   A    2    0
1   A    1    1
2   B    9    9
3   NaN  8    4
4   D    7    2
5   C    4    3

Sort by col1

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

Sort by multiple columns

>>> 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   NaN  8    4

Sort Descending

>>> df.sort_values(by='col1', ascending=False)
    col1 col2 col3
4   D    7    2
5   C    4    3
2   B    9    9
0   A    2    0
1   A    1    1
3   NaN  8    4

Putting NAs first

>>> df.sort_values(by='col1', ascending=False, na_position='first')
    col1 col2 col3
3   NaN  8    4
4   D    7    2
5   C    4    3
2   B    9    9
0   A    2    0
1   A    1    1
def sort_values(self, by=None, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last'):
    "\n        Sort by the values along either axis.\n\n        Parameters\n        ----------%(optional_by)s\n        axis : %(axes_single_arg)s, default 0\n             Axis to be sorted.\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        kind : {'quicksort', 'mergesort', 'heapsort'}, default 'quicksort'\n             Choice of sorting algorithm. See also ndarray.np.sort for more\n             information.  `mergesort` is the only stable algorithm. For\n             DataFrames, this option is only applied when sorting on a single\n             column or label.\n        na_position : {'first', 'last'}, default 'last'\n             Puts NaNs at the beginning if `first`; `last` puts NaNs at the\n             end.\n\n        Returns\n        -------\n        sorted_obj : DataFrame or None\n            DataFrame with sorted values if inplace=False, None otherwise.\n\n        Examples\n        --------\n        >>> df = pd.DataFrame({\n        ...     'col1': ['A', 'A', 'B', np.nan, 'D', 'C'],\n        ...     'col2': [2, 1, 9, 8, 7, 4],\n        ...     'col3': [0, 1, 9, 4, 2, 3],\n        ... })\n        >>> df\n            col1 col2 col3\n        0   A    2    0\n        1   A    1    1\n        2   B    9    9\n        3   NaN  8    4\n        4   D    7    2\n        5   C    4    3\n\n        Sort by col1\n\n        >>> df.sort_values(by=['col1'])\n            col1 col2 col3\n        0   A    2    0\n        1   A    1    1\n        2   B    9    9\n        5   C    4    3\n        4   D    7    2\n        3   NaN  8    4\n\n        Sort by multiple columns\n\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   NaN  8    4\n\n        Sort Descending\n\n        >>> df.sort_values(by='col1', ascending=False)\n            col1 col2 col3\n        4   D    7    2\n        5   C    4    3\n        2   B    9    9\n        0   A    2    0\n        1   A    1    1\n        3   NaN  8    4\n\n        Putting NAs first\n\n        >>> df.sort_values(by='col1', ascending=False, na_position='first')\n            col1 col2 col3\n        3   NaN  8    4\n        4   D    7    2\n        5   C    4    3\n        2   B    9    9\n        0   A    2    0\n        1   A    1    1\n        "
    raise NotImplementedError('sort_values has not been implemented on Panel or Panel4D objects.')