code: def lookup(self, row_labels, col_labels):
          
          n = len(row_labels)
          if n != len(col_labels):
              raise ValueError('Row labels must have same size as column labels')
  
          thresh = 1000
          if not self._is_mixed_type or n > thresh:
              values = self.values
              ridx = self.index.get_indexer(row_labels)
              cidx = self.columns.get_indexer(col_labels)
              if (ridx == -1).any():
                  raise KeyError('One or more row labels was not found')
              if (cidx == -1).any():
                  raise KeyError('One or more column labels was not found')
              flat_index = ridx * len(self.columns) + cidx
              result = values.flat[flat_index]
          else:
              result = np.empty(n, dtype='O')
              for i, (r, c) in enumerate(zip(row_labels, col_labels)):
                  result[i] = self._get_value(r, c)
  
          if is_object_dtype(result):
              result = lib.maybe_convert_objects(result)
  
          return result
docs: Label-based "fancy indexing" function for DataFrame.
  
          Given equal-length arrays of row and column labels, return an
          array of the values corresponding to each (row, col) pair.
  
          Parameters
          ----------
          row_labels : sequence
              The row labels to use for lookup
          col_labels : sequence
              The column labels to use for lookup
  
          Notes
          -----
          Akin to::
  
              result = [df.get_value(row, col)
                        for row, col in zip(row_labels, col_labels)]
  
          Examples
          --------
          values : ndarray
              The found values