You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
df1 has a non-monotonic datetimeindex, and we slice with values that don't fall in the index. df2 has a non-monotonic index of strings, which we slice values outside the index.
In [9]: importpandasaspd
...:
...: df1=pd.DataFrame({"A": [1, 2, 3]},
...: index=[pd.Timestamp('2017'),
...: pd.Timestamp('2019'),
...: pd.Timestamp('2018')])
...: df2=pd.DataFrame({"A": [1, 2, 3]},
...: index=['a', 'c', 'b'])
...:
In [10]: df1.loc['2020':'2022']
Out[10]:
EmptyDataFrameColumns: [A]
Index: []
In [11]: df2.loc['d':'e']
---------------------------------------------------------------------------ValueErrorTraceback (mostrecentcalllast)
~/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/indexes/base.pyinget_slice_bound(self, label, side, kind)
3664try:
->3665returnself._searchsorted_monotonic(label, side)
3666exceptValueError:
~/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/indexes/base.pyin_searchsorted_monotonic(self, label, side)
3623->3624raiseValueError('index must be monotonic increasing or decreasing')
3625ValueError: indexmustbemonotonicincreasingordecreasingDuringhandlingoftheaboveexception, anotherexceptionoccurred:
KeyErrorTraceback (mostrecentcalllast)
<ipython-input-11-e86df68316ba>in<module>()
---->1df2.loc['d':'e']
~/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/indexing.pyin__getitem__(self, key)
13671368maybe_callable=com._apply_if_callable(key, self.obj)
->1369returnself._getitem_axis(maybe_callable, axis=axis)
13701371def_is_scalar_access(self, key):
~/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/indexing.pyin_getitem_axis(self, key, axis)
1575ifisinstance(key, slice):
1576self._has_valid_type(key, axis)
->1577returnself._get_slice_axis(key, axis=axis)
1578elifis_bool_indexer(key):
1579returnself._getbool_axis(key, axis=axis)
~/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/indexing.pyin_get_slice_axis(self, slice_obj, axis)
1400labels=obj._get_axis(axis)
1401indexer=labels.slice_indexer(slice_obj.start, slice_obj.stop,
->1402slice_obj.step, kind=self.name)
14031404ifisinstance(indexer, slice):
~/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/indexes/base.pyinslice_indexer(self, start, end, step, kind)
3529""" 3530 start_slice, end_slice = self.slice_locs(start, end, step=step,-> 3531 kind=kind) 3532 3533 # return a slice~/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/indexes/base.py in slice_locs(self, start, end, step, kind) 3730 start_slice = None 3731 if start is not None:-> 3732 start_slice = self.get_slice_bound(start, 'left', kind) 3733 if start_slice is None: 3734 start_slice = 0~/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/indexes/base.py in get_slice_bound(self, label, side, kind) 3666 except ValueError: 3667 # raise the original KeyError-> 3668 raise err 3669 3670 if isinstance(slc, np.ndarray):~/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/indexes/base.py in get_slice_bound(self, label, side, kind) 3660 # we need to look up the label 3661 try:-> 3662 slc = self._get_loc_only_exact_matches(label) 3663 except KeyError as err: 3664 try:~/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/indexes/base.py in _get_loc_only_exact_matches(self, key) 3629 get_slice_bound. 3630 """->3631returnself.get_loc(key)
36323633defget_slice_bound(self, label, side, kind):
~/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/core/indexes/base.pyinget_loc(self, key, method, tolerance)
2529returnself._engine.get_loc(key)
2530exceptKeyError:
->2531returnself._engine.get_loc(self._maybe_cast_indexer(key))
25322533indexer=self.get_indexer([key], method=method, tolerance=tolerance)
~/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/_libs/index.pyxinpandas._libs.index.IndexEngine.get_loc()
137util.set_value_at(arr, loc, value)
138-->139cpdefget_loc(self, objectval):
140ifis_definitely_invalid_key(val):
141raiseTypeError("'{val}' is an invalid key".format(val=val))
~/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/_libs/index.pyxinpandas._libs.index.IndexEngine.get_loc()
159160try:
-->161returnself.mapping.get_item(val)
162except (TypeError, ValueError):
163raiseKeyError(val)
~/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/_libs/hashtable_class_helper.pxiinpandas._libs.hashtable.PyObjectHashTable.get_item()
1263sizeof(uint32_t)) # flags1264->1265cpdefget_item(self, objectval):
1266cdefkhiter_tk1267ifval!=valorvalisNone:
~/Envs/pandas-dev/lib/python3.6/site-packages/pandas/pandas/_libs/hashtable_class_helper.pxiinpandas._libs.hashtable.PyObjectHashTable.get_item()
1271returnself.table.vals[k]
1272else:
->1273raiseKeyError(val)
12741275cpdefset_item(self, objectkey, Py_ssize_tval):
KeyError: 'd'
toobaz
added
Index
Related to the Index class or subclasses
and removed
Indexing
Related to indexing on series/frames, not to indexes themselves
labels
Jun 29, 2019
These two should probably behave the same
df1
has a non-monotonic datetimeindex, and we slice with values that don't fall in the index.df2
has a non-monotonic index of strings, which we slice values outside the index.cc @jreback @shughes-uk
The text was updated successfully, but these errors were encountered: