Skip to content

Commit bb93ba0

Browse files
committed
rebased
1 parent 1def54a commit bb93ba0

File tree

3 files changed

+16
-23
lines changed

3 files changed

+16
-23
lines changed

pandas/core/arrays/categorical.py

+6-5
Original file line numberDiff line numberDiff line change
@@ -1361,13 +1361,14 @@ def memory_usage(self, deep=False):
13611361
@Appender(_shared_docs['searchsorted'])
13621362
def searchsorted(self, value, side='left', sorter=None):
13631363
from pandas.core.series import Series
1364-
codes = _get_codes_for_values(Series(value).values, self.categories)
1365-
if -1 in codes:
1364+
value_codes = _get_codes_for_values(Series(value).values,
1365+
self.categories)
1366+
if -1 in value_codes:
13661367
raise KeyError("Value(s) to be inserted must be in categories.")
1368+
value_codes = value_codes[0] if is_scalar(value) else value_codes
13671369

1368-
codes = codes[0] if is_scalar(value) else codes
1369-
1370-
return self.codes.searchsorted(codes, side=side, sorter=sorter)
1370+
return algorithms.searchsorted(self._codes, value_codes,
1371+
side=side, sorter=sorter)
13711372

13721373
def isna(self):
13731374
"""

pandas/core/base.py

-3
Original file line numberDiff line numberDiff line change
@@ -1461,9 +1461,6 @@ def factorize(self, sort=False, na_sentinel=-1):
14611461
wrong locations will likely be returned. Pandas does *not*
14621462
check this for you.
14631463
1464-
You can check sortedness by calling
1465-
:meth:`%(klass)s.is_monotonic_increasing`.
1466-
14671464
Parameters
14681465
----------
14691466
value : array_like

pandas/tests/arrays/categorical/test_analytics.py

+10-15
Original file line numberDiff line numberDiff line change
@@ -78,35 +78,30 @@ def test_searchsorted(self, ordered):
7878
# https://github.com/pandas-dev/pandas/issues/8420
7979
# https://github.com/pandas-dev/pandas/issues/14522
8080

81-
c = Categorical(['cheese', 'milk', 'apple', 'bread', 'bread'],
82-
categories=['cheese', 'milk', 'apple', 'bread'],
83-
ordered=ordered)
84-
s = Series(c)
81+
cat = Categorical(['cheese', 'milk', 'apple', 'bread', 'bread'],
82+
categories=['cheese', 'milk', 'apple', 'bread'],
83+
ordered=ordered)
84+
ser = Series(cat)
8585

8686
# Searching for single item argument, side='left' (default)
87-
res_cat = c.searchsorted('apple')
87+
res_cat = cat.searchsorted('apple')
8888
assert res_cat == 2
8989
assert is_scalar(res_cat)
9090

91-
res_ser = s.searchsorted('apple')
91+
res_ser = ser.searchsorted('apple')
9292
assert res_ser == 2
9393
assert is_scalar(res_ser)
9494

95-
res_cat = c.searchsorted('apple')
96-
res_ser = s.searchsorted('apple')
97-
assert res_cat == 2
98-
assert res_ser == 2
99-
10095
# Searching for single item array, side='left' (default)
101-
res_cat = c.searchsorted(['bread'])
102-
res_ser = s.searchsorted(['bread'])
96+
res_cat = cat.searchsorted(['bread'])
97+
res_ser = ser.searchsorted(['bread'])
10398
exp = np.array([3], dtype=np.intp)
10499
tm.assert_numpy_array_equal(res_cat, exp)
105100
tm.assert_numpy_array_equal(res_ser, exp)
106101

107102
# Searching for several items array, side='right'
108-
res_cat = c.searchsorted(['apple', 'bread'], side='right')
109-
res_ser = s.searchsorted(['apple', 'bread'], side='right')
103+
res_cat = cat.searchsorted(['apple', 'bread'], side='right')
104+
res_ser = ser.searchsorted(['apple', 'bread'], side='right')
110105
exp = np.array([3, 5], dtype=np.intp)
111106
tm.assert_numpy_array_equal(res_cat, exp)
112107
tm.assert_numpy_array_equal(res_ser, exp)

0 commit comments

Comments
 (0)