class_docstr: A data frame class, with only the methods required by the interchange
  protocol defined.
  
  Instances of this (private) class are returned from
  ``cudf.DataFrame.__dataframe__`` as objects with the methods and
  attributes defined on this class.
class_docstr_tok: ["A","data","frame","class",",","with","only","the","methods","required","by","the","interchange","protocol","defined",".","Instances","of","this","(","private",")","class","are","returned","from","``","cudf.DataFrame.__dataframe__","``","as","objects","with","the","methods","and","attributes","defined","on","this","class","."]
code: def select_columns_by_name(
      self, names: Sequence[str]
  ) -> "_CuDFDataFrame":
      if not isinstance(names, abc.Sequence):
          raise ValueError("`names` is not a sequence")
  
      return _CuDFDataFrame(
          self._df.loc[:, names], self._nan_as_null, self._allow_copy
      )
  
imports: import enum
  from collections import abc
  from typing import Any, Dict, Iterable, Mapping, Optional, Sequence, Tuple, cast
  import cupy
  import numpy
  from numba.cuda import as_cuda_array
  import rmm
  import cudf
  from cudf.core.buffer import Buffer, as_buffer
  from cudf.core.column import as_column, build_categorical_column, build_column
label_desc: Use image node_id 12 for calling the _CuDFDataFrame obj's underlying member method code with example usage: obj.select_columns_by_name(names) and returns: _CuDFDataFrame