code: def _gotitem(self, key, ndim, subset=None):
          
  
          # create a new object to prevent aliasing
          if subset is None:
              subset = self.obj
          self = self._shallow_copy(subset)
          self._reset_cache()
          if subset.ndim == 2:
              if is_scalar(key) and key in subset or is_list_like(key):
                  self._selection = key
          return self
docs: Sub-classes to define. Return a sliced object.
  
          Parameters
          ----------
          key : str / list of selections
          ndim : 1,2
              requested ndim of result
          subset : object, default None
              subset to act on