code: def sort_values(self, axis=0, ascending=True, inplace=False,
                      kind='quicksort', na_position='last'):
          inplace = validate_bool_kwarg(inplace, 'inplace')
          self._get_axis_number(axis)
          if inplace and self._is_cached:
              raise ValueError("This Series is a view of some other array, to "
                               "sort in-place you must create a copy")
          def _try_kind_sort(arr):
              try:
                  return arr.argsort(kind=kind)
              except TypeError:
                  return arr.argsort(kind='quicksort')
          arr = self._values
          sortedIdx = np.empty(len(self), dtype=np.int32)
          bad = isna(arr)
          good = ~bad
          idx = ibase.default_index(len(self))
          argsorted = _try_kind_sort(arr[good])
          if is_list_like(ascending):
              if len(ascending) != 1:
                  raise ValueError('Length of ascending (%d) must be 1 '
                                   'for Series' % (len(ascending)))
              ascending = ascending[0]
          if not is_bool(ascending):
              raise ValueError('ascending must be boolean')
          if not ascending:
              argsorted = argsorted[::-1]
          if na_position == 'last':
              n = good.sum()
              sortedIdx[:n] = idx[good][argsorted]
              sortedIdx[n:] = idx[bad]
          elif na_position == 'first':
              n = bad.sum()
              sortedIdx[n:] = idx[good][argsorted]
              sortedIdx[:n] = idx[bad]
          else:
              raise ValueError('invalid na_position: {!r}'.format(na_position))
          result = self._constructor(arr[sortedIdx], index=self.index[sortedIdx])
          if inplace:
              self._update_inplace(result)
          else:
              return result.__finalize__(self)