From f83220c042f3b2b187bc1669f3ac92758b3d1030 Mon Sep 17 00:00:00 2001 From: Brock Date: Mon, 19 Oct 2020 15:00:38 -0700 Subject: [PATCH 1/2] REF: nargsort incorrectly calling _values_for_argsort --- pandas/core/arrays/base.py | 16 ++++++++++++++-- pandas/core/sorting.py | 15 ++++++++++++--- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/pandas/core/arrays/base.py b/pandas/core/arrays/base.py index debfb50caeeaa..f8ff5ac18bbd9 100644 --- a/pandas/core/arrays/base.py +++ b/pandas/core/arrays/base.py @@ -507,7 +507,12 @@ def _values_for_argsort(self) -> np.ndarray: return np.array(self) def argsort( - self, ascending: bool = True, kind: str = "quicksort", *args, **kwargs + self, + ascending: bool = True, + kind: str = "quicksort", + na_position: str = "last", + *args, + **kwargs, ) -> np.ndarray: """ Return the indices that would sort this array. @@ -538,7 +543,14 @@ def argsort( # 2. argsort : total control over sorting. ascending = nv.validate_argsort_with_ascending(ascending, args, kwargs) - result = nargsort(self, kind=kind, ascending=ascending, na_position="last") + values = self._values_for_argsort() + result = nargsort( + values, + kind=kind, + ascending=ascending, + na_position=na_position, + mask=np.asarray(self.isna()), + ) return result def argmin(self): diff --git a/pandas/core/sorting.py b/pandas/core/sorting.py index e02b565ed5d7b..1132234ae7f8d 100644 --- a/pandas/core/sorting.py +++ b/pandas/core/sorting.py @@ -327,6 +327,7 @@ def nargsort( ascending: bool = True, na_position: str = "last", key: Optional[Callable] = None, + mask: Optional[np.ndarray] = None, ): """ Intended to be a drop-in replacement for np.argsort which handles NaNs. @@ -341,19 +342,27 @@ def nargsort( ascending : bool, default True na_position : {'first', 'last'}, default 'last' key : Optional[Callable], default None + mask : Optional[np.ndarray], default None + Passed when called by ExtensionArray.argsort. """ if key is not None: items = ensure_key_mapped(items, key) return nargsort( - items, kind=kind, ascending=ascending, na_position=na_position, key=None + items, + kind=kind, + ascending=ascending, + na_position=na_position, + key=None, + mask=mask, ) items = extract_array(items) - mask = np.asarray(isna(items)) + if mask is None: + mask = np.asarray(isna(items)) if is_extension_array_dtype(items): - items = items._values_for_argsort() + return items.argsort(ascending=ascending, kind=kind, na_position=na_position) else: items = np.asanyarray(items) From 5ce973b8a359a4ba94e6a82fd87c0016fa623c4d Mon Sep 17 00:00:00 2001 From: Brock Date: Mon, 19 Oct 2020 16:14:06 -0700 Subject: [PATCH 2/2] troubleshoot docbuild --- doc/source/whatsnew/v0.24.1.rst | 2 +- doc/source/whatsnew/v0.24.2.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/source/whatsnew/v0.24.1.rst b/doc/source/whatsnew/v0.24.1.rst index 99d642c379921..dd859dabc9c64 100644 --- a/doc/source/whatsnew/v0.24.1.rst +++ b/doc/source/whatsnew/v0.24.1.rst @@ -1,7 +1,7 @@ .. _whatsnew_0241: What's new in 0.24.1 (February 3, 2019) --------------------------------------- +--------------------------------------- .. warning:: diff --git a/doc/source/whatsnew/v0.24.2.rst b/doc/source/whatsnew/v0.24.2.rst index f8f919664ed25..36684d465373c 100644 --- a/doc/source/whatsnew/v0.24.2.rst +++ b/doc/source/whatsnew/v0.24.2.rst @@ -1,7 +1,7 @@ .. _whatsnew_0242: What's new in 0.24.2 (March 12, 2019) ------------------------------------- +------------------------------------- .. warning::