code: def iloc(cls, dataset, index):
      rows, columns = index
      scalar = all(map(util.isscalar, index))
  
      if isinstance(columns, slice):
          columns = [x.name for x in dataset.dimensions()[columns]]
      elif np.isscalar(columns):
          columns = [dataset.get_dimension(columns).name]
      else:
          columns = [dataset.get_dimension(d).name for d in columns]
  
      data = cls._index_ibis_table(dataset.data[columns])
  
      if scalar:
          return (
              data.filter(data.hv_row_id__ == rows)[columns]
              .head(1)
              .execute()
              .iloc[0, 0]
          )
  
      if isinstance(rows, slice):
          # We should use a pseudo column for the row number but i think that is still awaiting
          # a pr on ibis
          if any(
              x is not None for x in (rows.start, rows.stop, rows.step)
          ):
              predicates = []
              if rows.start:
                  predicates += [data.hv_row_id__ >= rows.start]
              if rows.stop:
                  predicates += [data.hv_row_id__ < rows.stop]
  
              data = data.filter(predicates)
      else:
          if not isinstance(rows, Iterable):
              rows = [rows]
          data = data.filter([data.hv_row_id__.isin(rows)])
  
      if ibis4():
          return data.drop("hv_row_id__")
      else:
          # Passing a sequence of fields to `drop` will be removed in Ibis 5.0
          return data.drop(["hv_row_id__"])
  
imports: import sys
  from collections.abc import Iterable
  from functools import lru_cache
  import numpy
  from packaging.version import Version
  from ..None import util
  from ..element import Element
  from ..ndmapping import NdMapping, item_check, sorted_context
  from .None import pandas
  from .interface import Interface
  from .util import cached
label_desc: Use image node_id 18 for calling the IbisInterface obj's underlying member method code with example usage: obj.iloc(cls, dataset, index) and returns: data, data, data