Skip to content

Commit dc87a7c

Browse files
jbrockmendelCloseChoice
authored andcommitted
CLN: use _values_for_argsort in fewer places (pandas-dev#33501)
1 parent 903123f commit dc87a7c

File tree

4 files changed

+9
-14
lines changed

4 files changed

+9
-14
lines changed

pandas/core/algorithms.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,7 @@ def factorize(
616616
values = _ensure_arraylike(values)
617617
original = values
618618

619-
if is_extension_array_dtype(values):
619+
if is_extension_array_dtype(values.dtype):
620620
values = extract_array(values)
621621
codes, uniques = values.factorize(na_sentinel=na_sentinel)
622622
dtype = original.dtype

pandas/core/arrays/categorical.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ def __init__(
370370
# we're inferring from values
371371
dtype = CategoricalDtype(categories, dtype.ordered)
372372

373-
elif is_categorical_dtype(values):
373+
elif is_categorical_dtype(values.dtype):
374374
old_codes = (
375375
values._values.codes if isinstance(values, ABCSeries) else values.codes
376376
)

pandas/core/indexes/base.py

+4-12
Original file line numberDiff line numberDiff line change
@@ -3596,12 +3596,8 @@ def _join_non_unique(self, other, how="left", return_indexers=False):
35963596
# We only get here if dtypes match
35973597
assert self.dtype == other.dtype
35983598

3599-
if is_extension_array_dtype(self.dtype):
3600-
lvalues = self._data._values_for_argsort()
3601-
rvalues = other._data._values_for_argsort()
3602-
else:
3603-
lvalues = self._values
3604-
rvalues = other._values
3599+
lvalues = self._get_engine_target()
3600+
rvalues = other._get_engine_target()
36053601

36063602
left_idx, right_idx = _get_join_indexers(
36073603
[lvalues], [rvalues], how=how, sort=True
@@ -3773,12 +3769,8 @@ def _join_monotonic(self, other, how="left", return_indexers=False):
37733769
else:
37743770
return ret_index
37753771

3776-
if is_extension_array_dtype(self.dtype):
3777-
sv = self._data._values_for_argsort()
3778-
ov = other._data._values_for_argsort()
3779-
else:
3780-
sv = self._values
3781-
ov = other._values
3772+
sv = self._get_engine_target()
3773+
ov = other._get_engine_target()
37823774

37833775
if self.is_unique and other.is_unique:
37843776
# We can perform much better than the general case

pandas/core/indexes/extension.py

+3
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,9 @@ def __array__(self, dtype=None) -> np.ndarray:
232232
return np.asarray(self._data, dtype=dtype)
233233

234234
def _get_engine_target(self) -> np.ndarray:
235+
# NB: _values_for_argsort happens to match the desired engine targets
236+
# for all of our existing EA-backed indexes, but in general
237+
# cannot be relied upon to exist.
235238
return self._data._values_for_argsort()
236239

237240
@doc(Index.dropna)

0 commit comments

Comments
 (0)