class_docstr: Implement n largest/smallest for Series
  
  Parameters
  ----------
  obj : Series
  n : int
  keep : {'first', 'last'}, default 'first'
  
  Returns
  -------
  nordered : Series
class_docstr_tok: ["Implement","n","largest\/smallest","for","Series","Parameters","--","--","--","--","--","obj",":","Series","n",":","int","keep",":","{","'first","'",",","'last","'","}",",","default","'first'","Returns","--","--","--","-","nordered",":","Series"]
code: def compute(self, method):
      n = self.n
      dtype = self.obj.dtype
      if not self.is_valid_dtype_n_method(dtype):
          raise TypeError(
              "Cannot use method '{method}' with "
              "dtype {dtype}".format(method=method, dtype=dtype)
          )
  
      if n <= 0:
          return self.obj[[]]
  
      dropped = self.obj.dropna()
  
      # slow method
      if n >= len(self.obj):
          reverse_it = self.keep == "last" or method == "nlargest"
          ascending = method == "nsmallest"
          slc = np.s_[::-1] if reverse_it else np.s_[:]
          return dropped[slc].sort_values(ascending=ascending).head(n)
  
      # fast method
      arr, pandas_dtype, _ = _ensure_data(dropped.values)
      if method == "nlargest":
          arr = -arr
          if is_integer_dtype(pandas_dtype):
              # GH 21426: ensure reverse ordering at boundaries
              arr -= 1
  
      if self.keep == "last":
          arr = arr[::-1]
  
      narr = len(arr)
      n = min(n, narr)
  
      kth_val = algos.kth_smallest(arr.copy(), n - 1)
      (ns,) = np.nonzero(arr <= kth_val)
      inds = ns[arr[ns].argsort(kind="mergesort")]
  
      if self.keep != "all":
          inds = inds[:n]
  
      if self.keep == "last":
          # reverse indices
          inds = narr - 1 - inds
  
      return dropped.iloc[inds]
  
imports: from __future__ import division
  from textwrap import dedent
  from warnings import catch_warnings, simplefilter, warn
  import numpy
  from pandas._libs import algos, hashtable, lib
  from pandas._libs.tslib import iNaT
  from pandas.util._decorators import Appender, Substitution, deprecate_kwarg
  from pandas.core.dtypes.cast import construct_1d_object_array_from_listlike, maybe_promote
  from pandas.core.dtypes.common import ensure_float64, ensure_int64, ensure_object, ensure_platform_int, ensure_uint64, is_array_like, is_bool_dtype, is_categorical_dtype, is_complex_dtype, is_datetime64_any_dtype, is_datetime64tz_dtype, is_datetimelike, is_extension_array_dtype, is_float_dtype, is_integer_dtype, is_interval_dtype, is_list_like, is_numeric_dtype, is_object_dtype, is_period_dtype, is_scalar, is_signed_integer_dtype, is_sparse, is_timedelta64_dtype, is_unsigned_integer_dtype, needs_i8_conversion
  from pandas.core.dtypes.generic import ABCIndex, ABCIndexClass, ABCSeries
  from pandas.core.dtypes.missing import isna, na_value_for_dtype
  from pandas.core import common
label_desc: Use image node_id 1 for calling the SelectNSeries obj's underlying member method code with example usage: obj.compute(method) and returns: dropped, self, dropped