class_docstr: Parameters
  ----------
  data : mapping
      Mapping of keys to column values.
  multiindex : bool, optional
      Whether tuple keys represent a hierarchical
      index with multiple "levels" (default=False).
  level_names : tuple, optional
      Tuple containing names for each of the levels.
      For a non-hierarchical index, a tuple of size 1
      may be passe.
  rangeindex : bool, optional
      Whether the keys should be returned as a RangeIndex
      in `to_pandas_index` (default=False).
  label_dtype : Dtype, optional
      What dtype should be returned in `to_pandas_index`
      (default=None).
class_docstr_tok: ["Parameters","--","--","--","--","--","data",":","mapping","Mapping","of","keys","to","column","values",".","multiindex",":","bool",",","optional","Whether","tuple","keys","represent","a","hierarchical","index","with","multiple","``","levels","''","(","default=False",")",".","level_names",":","tuple",",","optional","Tuple","containing","names","for","each","of","the","levels",".","For","a","non-hierarchical","index",",","a","tuple","of","size","1","may","be","passe",".","rangeindex",":","bool",",","optional","Whether","the","keys","should","be","returned","as","a","RangeIndex","in","`","to_pandas_index","`","(","default=False",")",".","label_dtype",":","Dtype",",","optional","What","dtype","should","be","returned","in","`","to_pandas_index","`","(","default=None",")","."]
docstr: Insert column into the ColumnAccessor at the specified location.
  
  Parameters
  ----------
  name : Name corresponding to the new column
  value : column-like
  loc : int, optional
      The location to insert the new value at.
      Must be (0 <= loc <= ncols). By default, the column is added
      to the end.
  
  Returns
  -------
  None, this function operates in-place.
docstr_tok: ["Insert","column","into","the","ColumnAccessor","at","the","specified","location",".","Parameters","--","--","--","--","--","name",":","Name","corresponding","to","the","new","column","value",":","column-like","loc",":","int",",","optional","The","location","to","insert","the","new","value","at",".","Must","be","(","0","<","=","loc","<","=","ncols",")",".","By","default",",","the","column","is","added","to","the","end",".","Returns","--","--","--","-","None",",","this","function","operates","in-place","."]
code: def insert(
      self, name: Any, value: Any, loc: int = -1, validate: bool = True
  ):
      """
      Insert column into the ColumnAccessor at the specified location.
  
      Parameters
      ----------
      name : Name corresponding to the new column
      value : column-like
      loc : int, optional
          The location to insert the new value at.
          Must be (0 <= loc <= ncols). By default, the column is added
          to the end.
  
      Returns
      -------
      None, this function operates in-place.
      """
      name = self._pad_key(name)
  
      ncols = len(self._data)
      if loc == -1:
          loc = ncols
      if not (0 <= loc <= ncols):
          raise ValueError(
              "insert: loc out of bounds: must be  0 <= loc <= ncols"
          )
      # TODO: we should move all insert logic here
      if name in self._data:
          raise ValueError(f"Cannot insert '{name}', already exists")
      if loc == len(self._data):
          if validate:
              value = column.as_column(value)
              if len(self._data) > 0:
                  if len(value) != self._column_length:
                      raise ValueError(
                          "All columns must be of equal length"
                      )
              else:
                  self._column_length = len(value)
          self._data[name] = value
      else:
          new_keys = self.names[:loc] + (name,) + self.names[loc:]
          new_values = (
              self.columns[:loc] + (value,) + self.columns[loc:]
          )
          self._data = self._data.__class__(zip(new_keys, new_values))
      self._clear_cache()
  
imports: from __future__ import annotations
  import itertools
  import warnings
  from collections import abc
  from functools import cached_property, reduce
  from typing import TYPE_CHECKING, Any, Callable, Dict, Mapping, Optional, Tuple, Union
  import numpy
  import pandas
  from packaging.version import Version
  from pandas.api.types import is_bool
  from typing_extensions import Self
  import cudf
  from cudf.core import column
label_desc: Use image node_id 19 for calling the ColumnAccessor obj's underlying member method code with example usage: obj.insert(name, value, loc, validate) without return types