Skip to content

Commit 21e0056

Browse files
committed
rebased
1 parent 4b662c9 commit 21e0056

File tree

3 files changed

+20
-27
lines changed

3 files changed

+20
-27
lines changed

pandas/core/arrays/categorical.py

+6-5
Original file line numberDiff line numberDiff line change
@@ -1375,13 +1375,14 @@ def memory_usage(self, deep=False):
13751375
@Appender(_shared_docs['searchsorted'])
13761376
def searchsorted(self, value, side='left', sorter=None):
13771377
from pandas.core.series import Series
1378-
codes = _get_codes_for_values(Series(value).values, self.categories)
1379-
if -1 in codes:
1378+
value_codes = _get_codes_for_values(Series(value).values,
1379+
self.categories)
1380+
if -1 in value_codes:
13801381
raise KeyError("Value(s) to be inserted must be in categories.")
1382+
value_codes = value_codes[0] if is_scalar(value) else value_codes
13811383

1382-
codes = codes[0] if is_scalar(value) else codes
1383-
1384-
return self.codes.searchsorted(codes, side=side, sorter=sorter)
1384+
return algorithms.searchsorted(self._codes, value_codes,
1385+
side=side, sorter=sorter)
13851386

13861387
def isna(self):
13871388
"""

pandas/core/base.py

-3
Original file line numberDiff line numberDiff line change
@@ -1463,9 +1463,6 @@ def factorize(self, sort=False, na_sentinel=-1):
14631463
wrong locations will likely be returned. Pandas does *not*
14641464
check this for you.
14651465
1466-
You can check sortedness by calling
1467-
:meth:`%(klass)s.is_monotonic_increasing`.
1468-
14691466
Parameters
14701467
----------
14711468
value : array_like

pandas/tests/arrays/categorical/test_analytics.py

+14-19
Original file line numberDiff line numberDiff line change
@@ -75,50 +75,45 @@ def test_searchsorted(self, ordered):
7575
# https://github.com/pandas-dev/pandas/issues/8420
7676
# https://github.com/pandas-dev/pandas/issues/14522
7777

78-
c = Categorical(['cheese', 'milk', 'apple', 'bread', 'bread'],
79-
categories=['cheese', 'milk', 'apple', 'bread'],
80-
ordered=ordered)
81-
s = Series(c)
78+
cat = Categorical(['cheese', 'milk', 'apple', 'bread', 'bread'],
79+
categories=['cheese', 'milk', 'apple', 'bread'],
80+
ordered=ordered)
81+
ser = Series(cat)
8282

8383
# Searching for single item argument, side='left' (default)
84-
res_cat = c.searchsorted('apple')
84+
res_cat = cat.searchsorted('apple')
8585
assert res_cat == 2
8686
assert is_scalar(res_cat)
8787

88-
res_ser = s.searchsorted('apple')
88+
res_ser = ser.searchsorted('apple')
8989
assert res_ser == 2
9090
assert is_scalar(res_ser)
9191

92-
res_cat = c.searchsorted('apple')
93-
res_ser = s.searchsorted('apple')
94-
assert res_cat == 2
95-
assert res_ser == 2
96-
9792
# Searching for single item array, side='left' (default)
98-
res_cat = c.searchsorted(['bread'])
99-
res_ser = s.searchsorted(['bread'])
93+
res_cat = cat.searchsorted(['bread'])
94+
res_ser = ser.searchsorted(['bread'])
10095
exp = np.array([3], dtype=np.intp)
10196
tm.assert_numpy_array_equal(res_cat, exp)
10297
tm.assert_numpy_array_equal(res_ser, exp)
10398

10499
# Searching for several items array, side='right'
105-
res_cat = c.searchsorted(['apple', 'bread'], side='right')
106-
res_ser = s.searchsorted(['apple', 'bread'], side='right')
100+
res_cat = cat.searchsorted(['apple', 'bread'], side='right')
101+
res_ser = ser.searchsorted(['apple', 'bread'], side='right')
107102
exp = np.array([3, 5], dtype=np.intp)
108103
tm.assert_numpy_array_equal(res_cat, exp)
109104
tm.assert_numpy_array_equal(res_ser, exp)
110105

111106
# Searching for a single value that is not from the Categorical
112107
with pytest.raises(KeyError):
113-
c.searchsorted('cucumber')
108+
cat.searchsorted('cucumber')
114109
with pytest.raises(KeyError):
115-
s.searchsorted('cucumber')
110+
ser.searchsorted('cucumber')
116111

117112
# Searching for multiple values one of each is not from the Categorical
118113
with pytest.raises(KeyError):
119-
c.searchsorted(['bread', 'cucumber'])
114+
cat.searchsorted(['bread', 'cucumber'])
120115
with pytest.raises(KeyError):
121-
s.searchsorted(['bread', 'cucumber'])
116+
ser.searchsorted(['bread', 'cucumber'])
122117

123118
def test_unique(self):
124119
# categories are reordered based on value when ordered=False

0 commit comments

Comments
 (0)