parameters: (self, series, key)
docstring: Fast lookup of value from 1-dimensional ndarray. Only use this if you
          know what you're doing.
docstring_summary: Fast lookup of value from 1-dimensional ndarray. Only use this if you
          know what you're doing.
docstring_tokens: Fast lookup of value from 1 - dimensional ndarray . Only use this if you know what you re doing .
function: def get_value(self, series, key):
          """
          Fast lookup of value from 1-dimensional ndarray. Only use this if you
          know what you're doing.
          """
  
          # if we have something that is Index-like, then
          # use this, e.g. DatetimeIndex
          # Things like `Series._get_value` (via .at) pass the EA directly here.
          s = getattr(series, '_values', series)
          if isinstance(s, (ExtensionArray, Index)) and is_scalar(key):
              # GH 20882, 21257
              # Unify Index and ExtensionArray treatment
              # First try to convert the key to a location
              # If that fails, raise a KeyError if an integer
              # index, otherwise, see if key is an integer, and
              # try that
              try:
                  iloc = self.get_loc(key)
                  return s[iloc]
              except KeyError:
                  if (len(self) > 0 and
                          (self.holds_integer() or self.is_boolean())):
                      raise
                  elif is_integer(key):
                      return s[key]
  
          s = com.values_from_object(series)
          k = com.values_from_object(key)
  
          k = self._convert_scalar_indexer(k, kind='getitem')
          try:
              return self._engine.get_value(s, k,
                                            tz=getattr(series.dtype, 'tz', None))
          except KeyError as e1:
              if len(self) > 0 and (self.holds_integer() or self.is_boolean()):
                  raise
  
              try:
                  return libindex.get_value_box(s, key)
              except IndexError:
                  raise
              except TypeError:
                  # generator/iterator-like
                  if is_iterator(key):
                      raise InvalidIndexError(key)
                  else:
                      raise e1
              except Exception:  # pragma: no cover
                  raise e1
          except TypeError:
              # python 3
              if is_scalar(key):  # pragma: no cover
                  raise IndexError(key)
              raise InvalidIndexError(key)
function_tokens: def get_value ( self , series , key ) : # if we have something that is Index-like, then # use this, e.g. DatetimeIndex # Things like `Series._get_value` (via .at) pass the EA directly here. s = getattr ( series , '_values' , series ) if isinstance ( s , ( ExtensionArray , Index ) ) and is_scalar ( key ) : # GH 20882, 21257 # Unify Index and ExtensionArray treatment # First try to convert the key to a location # If that fails, raise a KeyError if an integer # index, otherwise, see if key is an integer, and # try that try : iloc = self . get_loc ( key ) return s [ iloc ] except KeyError : if ( len ( self ) > 0 and ( self . holds_integer ( ) or self . is_boolean ( ) ) ) : raise elif is_integer ( key ) : return s [ key ] s = com . values_from_object ( series ) k = com . values_from_object ( key ) k = self . _convert_scalar_indexer ( k , kind = 'getitem' ) try : return self . _engine . get_value ( s , k , tz = getattr ( series . dtype , 'tz' , None ) ) except KeyError as e1 : if len ( self ) > 0 and ( self . holds_integer ( ) or self . is_boolean ( ) ) : raise try : return libindex . get_value_box ( s , key ) except IndexError : raise except TypeError : # generator/iterator-like if is_iterator ( key ) : raise InvalidIndexError ( key ) else : raise e1 except Exception : # pragma: no cover raise e1 except TypeError : # python 3 if is_scalar ( key ) : # pragma: no cover raise IndexError ( key ) raise InvalidIndexError ( key )