Skip to content

Commit 1ebdb56

Browse files
committed
PERF: categorical rank GH#15498
no need to rename categories where they are already ordered
1 parent a67cd85 commit 1ebdb56

File tree

2 files changed

+4
-5
lines changed

2 files changed

+4
-5
lines changed

pandas/core/algorithms.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -974,6 +974,9 @@ def _get_data_algo(values, func_map):
974974

975975
f = None
976976

977+
if is_categorical_dtype(values):
978+
values = values._values_for_rank()
979+
977980
if is_float_dtype(values):
978981
f = func_map['float64']
979982
values = _ensure_float64(values)
@@ -990,10 +993,6 @@ def _get_data_algo(values, func_map):
990993
f = func_map['uint64']
991994
values = _ensure_uint64(values)
992995

993-
elif is_categorical_dtype(values):
994-
f = func_map['float64']
995-
values = values._values_for_rank()
996-
997996
else:
998997
values = _ensure_object(values)
999998

pandas/core/categorical.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1420,8 +1420,8 @@ def _values_for_rank(self):
14201420
if self.ordered:
14211421
values = self.codes
14221422
mask = values == -1
1423-
values = values.astype('float64')
14241423
if mask.any():
1424+
values = values.astype('float64')
14251425
values[mask] = np.nan
14261426
elif self.categories.is_numeric():
14271427
values = np.array(self)

0 commit comments

Comments
 (0)