class_docstr: Index based on an underlying `Categorical`.
  
  CategoricalIndex can only take on a limited,
  and usually fixed, number of possible values (`categories`). Also,
  it might have an order, but numerical operations
  (additions, divisions, ...) are not possible.
  
  Parameters
  ----------
  data : array-like (1-dimensional)
      The values of the categorical. If `categories` are given, values not in
      `categories` will be replaced with NaN.
  categories : index-like, optional
      The categories for the categorical. Items need to be unique.
      If the categories are not given here (and also not in `dtype`), they
      will be inferred from the `data`.
  ordered : bool, optional
      Whether or not this categorical is treated as an ordered
      categorical. If not given here or in `dtype`, the resulting
      categorical will be unordered.
  dtype : CategoricalDtype or "category", optional
      If :class:`CategoricalDtype`, cannot be used together with
      `categories` or `ordered`.
  copy : bool, default False
      Make a copy of input ndarray.
  name : object, optional
      Name to be stored in the index.
  
  See Also
  --------
  Index : The base pandas-on-Spark Index type.
  
  Examples
  --------
  >>> ps.CategoricalIndex(["a", "b", "c", "a", "b", "c"])  # doctest: +NORMALIZE_WHITESPACE
  CategoricalIndex(['a', 'b', 'c', 'a', 'b', 'c'],
                   categories=['a', 'b', 'c'], ordered=False, dtype='category')
  
  ``CategoricalIndex`` can also be instantiated from a ``Categorical``:
  
  >>> c = pd.Categorical(["a", "b", "c", "a", "b", "c"])
  >>> ps.CategoricalIndex(c)  # doctest: +NORMALIZE_WHITESPACE
  CategoricalIndex(['a', 'b', 'c', 'a', 'b', 'c'],
                   categories=['a', 'b', 'c'], ordered=False, dtype='category')
  
  Ordered ``CategoricalIndex`` can have a min and max value.
  
  >>> ci = ps.CategoricalIndex(
  ...     ["a", "b", "c", "a", "b", "c"], ordered=True, categories=["c", "b", "a"]
  ... )
  >>> ci  # doctest: +NORMALIZE_WHITESPACE
  CategoricalIndex(['a', 'b', 'c', 'a', 'b', 'c'],
                   categories=['c', 'b', 'a'], ordered=True, dtype='category')
  
  From a Series:
  
  >>> s = ps.Series(["a", "b", "c", "a", "b", "c"], index=[10, 20, 30, 40, 50, 60])
  >>> ps.CategoricalIndex(s)  # doctest: +NORMALIZE_WHITESPACE
  CategoricalIndex(['a', 'b', 'c', 'a', 'b', 'c'],
                   categories=['a', 'b', 'c'], ordered=False, dtype='category')
  
  From an Index:
  
  >>> idx = ps.Index(["a", "b", "c", "a", "b", "c"])
  >>> ps.CategoricalIndex(idx)  # doctest: +NORMALIZE_WHITESPACE
  CategoricalIndex(['a', 'b', 'c', 'a', 'b', 'c'],
                   categories=['a', 'b', 'c'], ordered=False, dtype='category')
class_docstr_tok: ["Index","based","on","an","underlying","`","Categorical","`",".","CategoricalIndex","can","only","take","on","a","limited",",","and","usually","fixed",",","number","of","possible","values","(","`","categories","`",")",".","Also",",","it","might","have","an","order",",","but","numerical","operations","(","additions",",","divisions",",","...",")","are","not","possible",".","Parameters","--","--","--","--","--","data",":","array-like","(","1-dimensional",")","The","values","of","the","categorical",".","If","`","categories","`","are","given",",","values","not","in","`","categories","`","will","be","replaced","with","NaN",".","categories",":","index-like",",","optional","The","categories","for","the","categorical",".","Items","need","to","be","unique",".","If","the","categories","are","not","given","here","(","and","also","not","in","`","dtype","`",")",",","they","will","be","inferred","from","the","`","data","`",".","ordered",":","bool",",","optional","Whether","or","not","this","categorical","is","treated","as","an","ordered","categorical",".","If","not","given","here","or","in","`","dtype","`",",","the","resulting","categorical","will","be","unordered",".","dtype",":","CategoricalDtype","or","``","category","''",",","optional","If",":","class",":","`","CategoricalDtype","`",",","can","not","be","used","together","with","`","categories","`","or","`","ordered","`",".","copy",":","bool",",","default","False","Make","a","copy","of","input","ndarray",".","name",":","object",",","optional","Name","to","be","stored","in","the","index",".","See","Also","--","--","--","--","Index",":","The","base","pandas-on-Spark","Index","type",".","Examples","--","--","--","--",">",">",">","ps.CategoricalIndex","(","[","``","a","''",",","``","b","''",",","``","c","''",",","``","a","''",",","``","b","''",",","``","c","''","]",")","#","doctest",":","+NORMALIZE_WHITESPACE","CategoricalIndex","(","[","'","a","'",",","'","b","'",",","'","c","'",",","'","a","'",",","'","b","'",",","'","c","'","]",",","categories=","[","'","a","'",",","'","b","'",",","'","c","'","]",",","ordered=False",",","dtype='category","'",")","``","CategoricalIndex","``","can","also","be","instantiated","from","a","``","Categorical","``",":",">",">",">","c","=","pd.Categorical","(","[","``","a","''",",","``","b","''",",","``","c","''",",","``","a","''",",","``","b","''",",","``","c","''","]",")",">",">",">","ps.CategoricalIndex","(","c",")","#","doctest",":","+NORMALIZE_WHITESPACE","CategoricalIndex","(","[","'","a","'",",","'","b","'",",","'","c","'",",","'","a","'",",","'","b","'",",","'","c","'","]",",","categories=","[","'","a","'",",","'","b","'",",","'","c","'","]",",","ordered=False",",","dtype='category","'",")","Ordered","``","CategoricalIndex","``","can","have","a","min","and","max","value",".",">",">",">","ci","=","ps.CategoricalIndex","(","...","[","``","a","''",",","``","b","''",",","``","c","''",",","``","a","''",",","``","b","''",",","``","c","''","]",",","ordered=True",",","categories=","[","``","c","''",",","``","b","''",",","``","a","''","]","...",")",">",">",">","ci","#","doctest",":","+NORMALIZE_WHITESPACE","CategoricalIndex","(","[","'","a","'",",","'","b","'",",","'","c","'",",","'","a","'",",","'","b","'",",","'","c","'","]",",","categories=","[","'","c","'",",","'","b","'",",","'","a","'","]",",","ordered=True",",","dtype='category","'",")","From","a","Series",":",">",">",">","s","=","ps.Series","(","[","``","a","''",",","``","b","''",",","``","c","''",",","``","a","''",",","``","b","''",",","``","c","''","]",",","index=","[","10",",","20",",","30",",","40",",","50",",","60","]",")",">",">",">","ps.CategoricalIndex","(","s",")","#","doctest",":","+NORMALIZE_WHITESPACE","CategoricalIndex","(","[","'","a","'",",","'","b","'",",","'","c","'",",","'","a","'",",","'","b","'",",","'","c","'","]",",","categories=","[","'","a","'",",","'","b","'",",","'","c","'","]",",","ordered=False",",","dtype='category","'",")","From","an","Index",":",">",">",">","idx","=","ps.Index","(","[","``","a","''",",","``","b","''",",","``","c","''",",","``","a","''",",","``","b","''",",","``","c","''","]",")",">",">",">","ps.CategoricalIndex","(","idx",")","#","doctest",":","+NORMALIZE_WHITESPACE","CategoricalIndex","(","[","'","a","'",",","'","b","'",",","'","c","'",",","'","a","'",",","'","b","'",",","'","c","'","]",",","categories=","[","'","a","'",",","'","b","'",",","'","c","'","]",",","ordered=False",",","dtype='category","'",")"]
code: def __new__(
      cls,
      data=None,
      categories=None,
      ordered=None,
      dtype=None,
      copy=False,
      name=None,
  ):
      if not is_hashable(name):
          raise TypeError("Index.name must be a hashable type")
  
      if isinstance(data, (Series, Index)):
          if dtype is None:
              dtype = "category"
          return Index(data, dtype=dtype, copy=copy, name=name)
  
      return ps.from_pandas(
          pd.CategoricalIndex(
              data=data,
              categories=categories,
              ordered=ordered,
              dtype=dtype,
              name=name,
          )
      )
  
imports: from typing import Any, Callable, List, Optional, Union, cast, no_type_check
  import pandas
  from pandas.api.types import is_hashable, CategoricalDtype
  from pyspark import pandas
  from pyspark.pandas.indexes.base import Index
  from pyspark.pandas.internal import InternalField
  from pyspark.pandas.series import Series
  from pyspark.sql.types import StructField
label_desc: Use image node_id 1 for calling the CategoricalIndex obj's underlying member method code with example usage: obj.__new__(cls, data, categories, ordered, dtype, copy, name) and returns: ps, Index