code: def select(cls, dataset, selection_mask=None, **selection):
      df = dataset.data
      if selection_mask is None:
          selection_mask = cls.select_mask(dataset, selection)
  
      indexed = cls.indexed(dataset, selection)
      if isinstance(selection_mask, pd.Series):
          df = df[selection_mask]
      else:
          df = df.iloc[selection_mask]
      if indexed and len(df) == 1 and len(dataset.vdims) == 1:
          return df[dataset.vdims[0].name].iloc[0]
      return df
  
imports: import numpy
  import pandas
  from packaging.version import Version
  from pandas.api.types import is_numeric_dtype
  from ..None import util
  from ..dimension import Dimension, dimension_name
  from ..element import Element
  from ..ndmapping import NdMapping, item_check, sorted_context
  from .interface import DataError, Interface
  from .util import finite_range
label_desc: Use image node_id 15 for calling the PandasInterface obj's underlying member method code with example usage: obj.select(cls, dataset, selection_mask) and returns: df, df