From 7171ce781377afd5584af07fc5ff40fe8d56e458 Mon Sep 17 00:00:00 2001 From: Matthew Roeschke <10647082+mroeschke@users.noreply.github.com> Date: Mon, 26 Sep 2022 16:15:22 -0700 Subject: [PATCH 1/4] PERF: Delay creation of indexer in RangeIndex.sort_values --- pandas/core/indexes/range.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/pandas/core/indexes/range.py b/pandas/core/indexes/range.py index 27b62776c3001..e88737439dfd3 100644 --- a/pandas/core/indexes/range.py +++ b/pandas/core/indexes/range.py @@ -554,8 +554,6 @@ def sort_values( na_position: str = "last", key: Callable | None = None, ): - sorted_index = self - indexer = RangeIndex(range(len(self))) if key is not None: return super().sort_values( return_indexer=return_indexer, @@ -565,17 +563,22 @@ def sort_values( ) else: sorted_index = self + inverse_indexer = False if ascending: if self.step < 0: sorted_index = self[::-1] - indexer = indexer[::-1] + inverse_indexer = True else: if self.step > 0: sorted_index = self[::-1] - indexer = indexer = indexer[::-1] + inverse_indexer = True if return_indexer: - return sorted_index, indexer + if inverse_indexer: + rng = range(len(self) + 1, -1, -1) + else: + rng = range(len(self)) + return sorted_index, RangeIndex(rng) else: return sorted_index From c21856914ffb47984d31a2b90981425e685452ff Mon Sep 17 00:00:00 2001 From: Matthew Roeschke <10647082+mroeschke@users.noreply.github.com> Date: Mon, 26 Sep 2022 16:27:01 -0700 Subject: [PATCH 2/4] Use neg 1 --- pandas/core/indexes/range.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/core/indexes/range.py b/pandas/core/indexes/range.py index e88737439dfd3..0948c5a3825d0 100644 --- a/pandas/core/indexes/range.py +++ b/pandas/core/indexes/range.py @@ -575,7 +575,7 @@ def sort_values( if return_indexer: if inverse_indexer: - rng = range(len(self) + 1, -1, -1) + rng = range(len(self) - 1, -1, -1) else: rng = range(len(self)) return sorted_index, RangeIndex(rng) From 1156428a3cbe697112c9f99614a8e39af6706fa6 Mon Sep 17 00:00:00 2001 From: Matthew Roeschke <10647082+mroeschke@users.noreply.github.com> Date: Mon, 26 Sep 2022 16:29:53 -0700 Subject: [PATCH 3/4] Add whatsnew --- doc/source/whatsnew/v1.6.0.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/whatsnew/v1.6.0.rst b/doc/source/whatsnew/v1.6.0.rst index d726f69286469..d40d430c32d68 100644 --- a/doc/source/whatsnew/v1.6.0.rst +++ b/doc/source/whatsnew/v1.6.0.rst @@ -148,7 +148,7 @@ Performance improvements - Performance improvement for :meth:`MultiIndex.intersection` (:issue:`48604`) - Performance improvement in ``var`` for nullable dtypes (:issue:`48379`). - Performance improvement to :func:`read_sas` with ``blank_missing=True`` (:issue:`48502`) -- +- Memory improvement in :meth:`RangeIndex.sort_values` (:issue:`?`) .. --------------------------------------------------------------------------- .. _whatsnew_160.bug_fixes: From c1d7a910f8816b43ceb44aca38cfd90cde4c174b Mon Sep 17 00:00:00 2001 From: Matthew Roeschke <10647082+mroeschke@users.noreply.github.com> Date: Mon, 26 Sep 2022 16:30:42 -0700 Subject: [PATCH 4/4] Add pr number --- doc/source/whatsnew/v1.6.0.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/source/whatsnew/v1.6.0.rst b/doc/source/whatsnew/v1.6.0.rst index d40d430c32d68..b29cf0424a9e7 100644 --- a/doc/source/whatsnew/v1.6.0.rst +++ b/doc/source/whatsnew/v1.6.0.rst @@ -148,7 +148,7 @@ Performance improvements - Performance improvement for :meth:`MultiIndex.intersection` (:issue:`48604`) - Performance improvement in ``var`` for nullable dtypes (:issue:`48379`). - Performance improvement to :func:`read_sas` with ``blank_missing=True`` (:issue:`48502`) -- Memory improvement in :meth:`RangeIndex.sort_values` (:issue:`?`) +- Memory improvement in :meth:`RangeIndex.sort_values` (:issue:`48801`) .. --------------------------------------------------------------------------- .. _whatsnew_160.bug_fixes: