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","'",")"]
docstr: The category codes of this categorical.
  
  Codes are an Index of integers which are the positions of the actual
  values in the categories Index.
  
  There is no setter, use the other categorical methods and the normal item
  setter to change values in the categorical.
  
  Returns
  -------
  Index
      A non-writable view of the `codes` Index.
  
  Examples
  --------
  >>> idx = ps.CategoricalIndex(list("abbccc"))
  >>> idx  # doctest: +NORMALIZE_WHITESPACE
  CategoricalIndex(['a', 'b', 'b', 'c', 'c', 'c'],
                   categories=['a', 'b', 'c'], ordered=False, dtype='category')
  
  >>> idx.codes
  Index([0, 1, 1, 2, 2, 2], dtype='int8')
docstr_tok: ["The","category","codes","of","this","categorical",".","Codes","are","an","Index","of","integers","which","are","the","positions","of","the","actual","values","in","the","categories","Index",".","There","is","no","setter",",","use","the","other","categorical","methods","and","the","normal","item","setter","to","change","values","in","the","categorical",".","Returns","--","--","--","-","Index","A","non-writable","view","of","the","`","codes","`","Index",".","Examples","--","--","--","--",">",">",">","idx","=","ps.CategoricalIndex","(","list","(","``","abbccc","''",")",")",">",">",">","idx","#","doctest",":","+NORMALIZE_WHITESPACE","CategoricalIndex","(","[","'","a","'",",","'","b","'",",","'","b","'",",","'","c","'",",","'","c","'",",","'","c","'","]",",","categories=","[","'","a","'",",","'","b","'",",","'","c","'","]",",","ordered=False",",","dtype='category","'",")",">",">",">","idx.codes","Index","(","[","0",",","1",",","1",",","2",",","2",",","2","]",",","dtype='int8","'",")"]
code: def codes(self) -> Index:
      """
      The category codes of this categorical.
  
      Codes are an Index of integers which are the positions of the actual
      values in the categories Index.
  
      There is no setter, use the other categorical methods and the normal item
      setter to change values in the categorical.
  
      Returns
      -------
      Index
          A non-writable view of the `codes` Index.
  
      Examples
      --------
      >>> idx = ps.CategoricalIndex(list("abbccc"))
      >>> idx  # doctest: +NORMALIZE_WHITESPACE
      CategoricalIndex(['a', 'b', 'b', 'c', 'c', 'c'],
                       categories=['a', 'b', 'c'], ordered=False, dtype='category')
  
      >>> idx.codes
      Index([0, 1, 1, 2, 2, 2], dtype='int8')
      """
      return self._with_new_scol(
          self.spark.column,
          field=InternalField.from_struct_field(
              StructField(
                  name=self._internal.index_spark_column_names[0],
                  dataType=self.spark.data_type,
                  nullable=self.spark.nullable,
              )
          ),
      ).rename(None)
  
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 3 for calling the CategoricalIndex obj's underlying member method code with example usage: obj.codes() and returns: self