Can no longer slice DatetimeIndex with datetime.date values outside the index in 1.0.0 · Issue #31501 · pandas-dev/pandas (original) (raw)
As of 1.0.0 you can no longer slice a DatetimeIndex with dt.date values outside the index.
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
pandas\_libs\index.pyx in pandas._libs.index.DatetimeEngine.get_loc()
pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
TypeError: an integer is required
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
C:\ProgramData\Miniconda3.7\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
2645 try:
-> 2646 return self._engine.get_loc(key)
2647 except KeyError:
pandas\_libs\index.pyx in pandas._libs.index.DatetimeEngine.get_loc()
pandas\_libs\index.pyx in pandas._libs.index.DatetimeEngine.get_loc()
pandas\_libs\index.pyx in pandas._libs.index.DatetimeEngine._date_check_type()
KeyError: datetime.date(2018, 1, 1)
During handling of the above exception, another exception occurred:
TypeError Traceback (most recent call last)
pandas\_libs\index.pyx in pandas._libs.index.DatetimeEngine.get_loc()
pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
TypeError: an integer is required
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
C:\ProgramData\Miniconda3.7\lib\site-packages\pandas\core\indexes\datetimes.py in get_loc(self, key, method, tolerance)
714 try:
--> 715 return Index.get_loc(self, key, method, tolerance)
716 except (KeyError, ValueError, TypeError):
C:\ProgramData\Miniconda3.7\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
2647 except KeyError:
-> 2648 return self._engine.get_loc(self._maybe_cast_indexer(key))
2649 indexer = self.get_indexer([key], method=method, tolerance=tolerance)
pandas\_libs\index.pyx in pandas._libs.index.DatetimeEngine.get_loc()
pandas\_libs\index.pyx in pandas._libs.index.DatetimeEngine.get_loc()
pandas\_libs\index.pyx in pandas._libs.index.DatetimeEngine._date_check_type()
KeyError: datetime.date(2018, 1, 1)
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
pandas\_libs\index.pyx in pandas._libs.index.DatetimeEngine.get_loc()
pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
KeyError: 1514764800000000000
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
C:\ProgramData\Miniconda3.7\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
2645 try:
-> 2646 return self._engine.get_loc(key)
2647 except KeyError:
pandas\_libs\index.pyx in pandas._libs.index.DatetimeEngine.get_loc()
pandas\_libs\index.pyx in pandas._libs.index.DatetimeEngine.get_loc()
KeyError: Timestamp('2018-01-01 00:00:00')
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
pandas\_libs\index.pyx in pandas._libs.index.DatetimeEngine.get_loc()
pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
pandas\_libs\hashtable_class_helper.pxi in pandas._libs.hashtable.Int64HashTable.get_item()
KeyError: 1514764800000000000
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
C:\ProgramData\Miniconda3.7\lib\site-packages\pandas\core\indexes\datetimes.py in get_loc(self, key, method, tolerance)
727 stamp = stamp.tz_localize(self.tz)
--> 728 return Index.get_loc(self, stamp, method, tolerance)
729 except KeyError:
C:\ProgramData\Miniconda3.7\lib\site-packages\pandas\core\indexes\base.py in get_loc(self, key, method, tolerance)
2647 except KeyError:
-> 2648 return self._engine.get_loc(self._maybe_cast_indexer(key))
2649 indexer = self.get_indexer([key], method=method, tolerance=tolerance)
pandas\_libs\index.pyx in pandas._libs.index.DatetimeEngine.get_loc()
pandas\_libs\index.pyx in pandas._libs.index.DatetimeEngine.get_loc()
KeyError: Timestamp('2018-01-01 00:00:00')
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
C:\ProgramData\Miniconda3.7\lib\site-packages\pandas\core\indexes\base.py in get_slice_bound(self, label, side, kind)
4841 try:
-> 4842 slc = self.get_loc(label)
4843 except KeyError as err:
C:\ProgramData\Miniconda3.7\lib\site-packages\pandas\core\indexes\datetimes.py in get_loc(self, key, method, tolerance)
729 except KeyError:
--> 730 raise KeyError(key)
731 except ValueError as e:
KeyError: datetime.date(2018, 1, 1)
During handling of the above exception, another exception occurred:
TypeError Traceback (most recent call last)
<ipython-input-47-a23c04333556> in <module>
3 s = pd.Series([0,1],pd.DatetimeIndex([dt.date(2019,1,1),dt.date(2019,1,2)]))
4 s[dt.date(2019,1,1):] # works
----> 5 s[dt.date(2018,1,1):] # error
C:\ProgramData\Miniconda3.7\lib\site-packages\pandas\core\series.py in __getitem__(self, key)
908 key = check_bool_indexer(self.index, key)
909
--> 910 return self._get_with(key)
911
912 def _get_with(self, key):
C:\ProgramData\Miniconda3.7\lib\site-packages\pandas\core\series.py in _get_with(self, key)
913 # other: fancy integer or otherwise
914 if isinstance(key, slice):
--> 915 return self._slice(key)
916 elif isinstance(key, ABCDataFrame):
917 raise TypeError(
C:\ProgramData\Miniconda3.7\lib\site-packages\pandas\core\series.py in _slice(self, slobj, axis, kind)
863
864 def _slice(self, slobj: slice, axis: int = 0, kind=None):
--> 865 slobj = self.index._convert_slice_indexer(slobj, kind=kind or "getitem")
866 return self._get_values(slobj)
867
C:\ProgramData\Miniconda3.7\lib\site-packages\pandas\core\indexes\base.py in _convert_slice_indexer(self, key, kind)
2961 indexer = key
2962 else:
-> 2963 indexer = self.slice_indexer(start, stop, step, kind=kind)
2964
2965 return indexer
C:\ProgramData\Miniconda3.7\lib\site-packages\pandas\core\indexes\datetimes.py in slice_indexer(self, start, end, step, kind)
806
807 try:
--> 808 return Index.slice_indexer(self, start, end, step, kind=kind)
809 except KeyError:
810 # For historical reasons DatetimeIndex by default supports
C:\ProgramData\Miniconda3.7\lib\site-packages\pandas\core\indexes\base.py in slice_indexer(self, start, end, step, kind)
4711 slice(1, 3)
4712 """
-> 4713 start_slice, end_slice = self.slice_locs(start, end, step=step, kind=kind)
4714
4715 # return a slice
C:\ProgramData\Miniconda3.7\lib\site-packages\pandas\core\indexes\base.py in slice_locs(self, start, end, step, kind)
4924 start_slice = None
4925 if start is not None:
-> 4926 start_slice = self.get_slice_bound(start, "left", kind)
4927 if start_slice is None:
4928 start_slice = 0
C:\ProgramData\Miniconda3.7\lib\site-packages\pandas\core\indexes\base.py in get_slice_bound(self, label, side, kind)
4843 except KeyError as err:
4844 try:
-> 4845 return self._searchsorted_monotonic(label, side)
4846 except ValueError:
4847 # raise the original KeyError
C:\ProgramData\Miniconda3.7\lib\site-packages\pandas\core\indexes\base.py in _searchsorted_monotonic(self, label, side)
4794 def _searchsorted_monotonic(self, label, side="left"):
4795 if self.is_monotonic_increasing:
-> 4796 return self.searchsorted(label, side=side)
4797 elif self.is_monotonic_decreasing:
4798 # np.searchsorted expects ascending sort order, have to reverse
C:\ProgramData\Miniconda3.7\lib\site-packages\pandas\core\indexes\datetimes.py in searchsorted(self, value, side, sorter)
851 elif not isinstance(value, DatetimeArray):
852 raise TypeError(
--> 853 "searchsorted requires compatible dtype or scalar, "
854 f"not {type(value).__name__}"
855 )
TypeError: searchsorted requires compatible dtype or scalar, not date