Skip to content

Commit 6786846

Browse files
authored
ENH: EA._get_repr_footer (#55478)
1 parent b284101 commit 6786846

File tree

3 files changed

+19
-10
lines changed

3 files changed

+19
-10
lines changed

pandas/core/arrays/base.py

+10-2
Original file line numberDiff line numberDiff line change
@@ -1663,7 +1663,14 @@ def __repr__(self) -> str:
16631663
self, self._formatter(), indent_for_name=False
16641664
).rstrip(", \n")
16651665
class_name = f"<{type(self).__name__}>\n"
1666-
return f"{class_name}{data}\nLength: {len(self)}, dtype: {self.dtype}"
1666+
footer = self._get_repr_footer()
1667+
return f"{class_name}{data}\n{footer}"
1668+
1669+
def _get_repr_footer(self) -> str:
1670+
# GH#24278
1671+
if self.ndim > 1:
1672+
return f"Shape: {self.shape}, dtype: {self.dtype}"
1673+
return f"Length: {len(self)}, dtype: {self.dtype}"
16671674

16681675
def _repr_2d(self) -> str:
16691676
from pandas.io.formats.printing import format_object_summary
@@ -1679,7 +1686,8 @@ def _repr_2d(self) -> str:
16791686
]
16801687
data = ",\n".join(lines)
16811688
class_name = f"<{type(self).__name__}>"
1682-
return f"{class_name}\n[\n{data}\n]\nShape: {self.shape}, dtype: {self.dtype}"
1689+
footer = self._get_repr_footer()
1690+
return f"{class_name}\n[\n{data}\n]\n{footer}"
16831691

16841692
def _formatter(self, boxed: bool = False) -> Callable[[Any], str | None]:
16851693
"""

pandas/core/arrays/categorical.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -2177,7 +2177,7 @@ def _repr_categories(self) -> list[str]:
21772177
category_strs = [x.strip() for x in category_strs]
21782178
return category_strs
21792179

2180-
def _repr_categories_info(self) -> str:
2180+
def _get_repr_footer(self) -> str:
21812181
"""
21822182
Returns a string representation of the footer.
21832183
"""
@@ -2229,7 +2229,7 @@ def __repr__(self) -> str:
22292229
"""
22302230
String representation.
22312231
"""
2232-
footer = self._repr_categories_info()
2232+
footer = self._get_repr_footer()
22332233
length = len(self)
22342234
max_len = 10
22352235
if length > max_len:

pandas/io/formats/format.py

+7-6
Original file line numberDiff line numberDiff line change
@@ -259,11 +259,12 @@ def _get_footer(self) -> str:
259259
name = self.series.name
260260
footer = ""
261261

262-
if getattr(self.series.index, "freq", None) is not None:
263-
assert isinstance(
264-
self.series.index, (DatetimeIndex, PeriodIndex, TimedeltaIndex)
265-
)
266-
footer += f"Freq: {self.series.index.freqstr}"
262+
index = self.series.index
263+
if (
264+
isinstance(index, (DatetimeIndex, PeriodIndex, TimedeltaIndex))
265+
and index.freq is not None
266+
):
267+
footer += f"Freq: {index.freqstr}"
267268

268269
if self.name is not False and name is not None:
269270
if footer:
@@ -289,7 +290,7 @@ def _get_footer(self) -> str:
289290
# level infos are added to the end and in a new line, like it is done
290291
# for Categoricals
291292
if isinstance(self.tr_series.dtype, CategoricalDtype):
292-
level_info = self.tr_series._values._repr_categories_info()
293+
level_info = self.tr_series._values._get_repr_footer()
293294
if footer:
294295
footer += "\n"
295296
footer += level_info

0 commit comments

Comments
 (0)