Skip to content

Commit 142ca08

Browse files
authored
BUG: CategoricalDtype.__repr__ with RangeIndex categories (#38245)
* BUG: CategoricalDtype.__repr__ with RangeIndex categories * fix broken tests * fixup
1 parent dbdc55c commit 142ca08

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

pandas/core/dtypes/dtypes.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -399,10 +399,14 @@ def __eq__(self, other: Any) -> bool:
399399

400400
def __repr__(self) -> str_type:
401401
if self.categories is None:
402-
data = "None, "
402+
data = "None"
403403
else:
404404
data = self.categories._format_data(name=type(self).__name__)
405-
return f"CategoricalDtype(categories={data}ordered={self.ordered})"
405+
if data is None:
406+
# self.categories is RangeIndex
407+
data = str(self.categories._range)
408+
data = data.rstrip(", ")
409+
return f"CategoricalDtype(categories={data}, ordered={self.ordered})"
406410

407411
@staticmethod
408412
def _hash_categories(categories, ordered: Ordered = True) -> int:

pandas/tests/dtypes/test_dtypes.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,14 @@ def test_not_string(self):
199199
# though CategoricalDtype has object kind, it cannot be string
200200
assert not is_string_dtype(CategoricalDtype())
201201

202+
def test_repr_range_categories(self):
203+
rng = pd.Index(range(3))
204+
dtype = CategoricalDtype(categories=rng, ordered=False)
205+
result = repr(dtype)
206+
207+
expected = "CategoricalDtype(categories=range(0, 3), ordered=False)"
208+
assert result == expected
209+
202210

203211
class TestDatetimeTZDtype(Base):
204212
@pytest.fixture

0 commit comments

Comments
 (0)