BUG: many methods on CategoricalIndex.str are broken · Issue #23556 · pandas-dev/pandas (original) (raw)

This was also uncovered by #23167, but is a different error than #23555.

Basically, all methods calling CategoricalIndex.str._wrap_result(result, use_codes=True) will necessarily fail, e.g.:

>>> import pandas as pd
>>> pd.Index(['a', 'b', 'aa'], dtype='category').str.replace('a', 'c')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\ProgramData\Miniconda3\envs\pandas-dev\lib\site-packages\pandas\core\strings.py", line 2430, in replace
    return self._wrap_result(result)
  File "C:\ProgramData\Miniconda3\envs\pandas-dev\lib\site-packages\pandas\core\strings.py", line 1964, in _wrap_result
    result = take_1d(result, self._orig.cat.codes)
AttributeError: 'CategoricalIndex' object has no attribute 'cat'

This is because self._orig is the original CategoricalIndex, which does not have a cat-accessor.