From e6ab42946a1da79064b9a30aeef20c48b69835b9 Mon Sep 17 00:00:00 2001 From: Terji Petersen Date: Sun, 22 Jan 2023 09:05:50 +0000 Subject: [PATCH 1/3] DEPR: move NumericIndex._format_native_types to Index --- pandas/core/indexes/base.py | 20 ++++++++++++++++++- pandas/core/indexes/numeric.py | 35 +--------------------------------- 2 files changed, 20 insertions(+), 35 deletions(-) diff --git a/pandas/core/indexes/base.py b/pandas/core/indexes/base.py index fc2c51166a737..159eb93ef3acb 100644 --- a/pandas/core/indexes/base.py +++ b/pandas/core/indexes/base.py @@ -1291,11 +1291,29 @@ def _format_with_header(self, header: list[str_t], na_rep: str_t) -> list[str_t] return header + result def _format_native_types( - self, *, na_rep: str_t = "", quoting=None, **kwargs + self, + *, + na_rep: str_t = "", + decimal: str = ".", + float_format=None, + quoting=None, ) -> npt.NDArray[np.object_]: """ Actually format specific types of the index. """ + from pandas.io.formats.format import FloatArrayFormatter + + if is_float_dtype(self.dtype) and not is_extension_array_dtype(self.dtype): + formatter = FloatArrayFormatter( + self._values, + na_rep=na_rep, + float_format=float_format, + decimal=decimal, + quoting=quoting, + fixed_width=False, + ) + return formatter.get_result_as_array() + mask = isna(self) if not self.is_object() and not quoting: values = np.asarray(self).astype(str) diff --git a/pandas/core/indexes/numeric.py b/pandas/core/indexes/numeric.py index fab741ec1ba18..68bdd1893c77f 100644 --- a/pandas/core/indexes/numeric.py +++ b/pandas/core/indexes/numeric.py @@ -5,10 +5,7 @@ import numpy as np from pandas._libs import index as libindex -from pandas._typing import ( - Dtype, - npt, -) +from pandas._typing import Dtype from pandas.util._decorators import ( cache_readonly, doc, @@ -251,33 +248,3 @@ def _assert_safe_casting(cls, data: np.ndarray, subarr: np.ndarray) -> None: if is_integer_dtype(subarr.dtype): if not np.array_equal(data, subarr): raise TypeError("Unsafe NumPy casting, you must explicitly cast") - - def _format_native_types( - self, - *, - na_rep: str = "", - float_format=None, - decimal: str = ".", - quoting=None, - **kwargs, - ) -> npt.NDArray[np.object_]: - from pandas.io.formats.format import FloatArrayFormatter - - if is_float_dtype(self.dtype): - formatter = FloatArrayFormatter( - self._values, - na_rep=na_rep, - float_format=float_format, - decimal=decimal, - quoting=quoting, - fixed_width=False, - ) - return formatter.get_result_as_array() - - return super()._format_native_types( - na_rep=na_rep, - float_format=float_format, - decimal=decimal, - quoting=quoting, - **kwargs, - ) From 8b42196b05ecaf2224a752c1b353a22df2752e89 Mon Sep 17 00:00:00 2001 From: Terji Petersen Date: Sun, 22 Jan 2023 09:47:18 +0000 Subject: [PATCH 2/3] fix date_format parameter --- pandas/core/indexes/base.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pandas/core/indexes/base.py b/pandas/core/indexes/base.py index 159eb93ef3acb..03fa59d7273a1 100644 --- a/pandas/core/indexes/base.py +++ b/pandas/core/indexes/base.py @@ -1296,6 +1296,7 @@ def _format_native_types( na_rep: str_t = "", decimal: str = ".", float_format=None, + date_format=None, quoting=None, ) -> npt.NDArray[np.object_]: """ From 02e5715423f85728c2e91acedb1dba4fbdbff1c0 Mon Sep 17 00:00:00 2001 From: Terji Petersen Date: Sun, 22 Jan 2023 11:30:32 +0000 Subject: [PATCH 3/3] fix mypy issue --- pandas/core/indexes/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/core/indexes/base.py b/pandas/core/indexes/base.py index 03fa59d7273a1..b05b7cae8042e 100644 --- a/pandas/core/indexes/base.py +++ b/pandas/core/indexes/base.py @@ -1294,7 +1294,7 @@ def _format_native_types( self, *, na_rep: str_t = "", - decimal: str = ".", + decimal: str_t = ".", float_format=None, date_format=None, quoting=None,