@@ -1662,16 +1662,6 @@ def _convert_to_indexer(self, key, axis: int):
16621662 return {"key" : key }
16631663 raise
16641664
1665- def _get_slice_axis (self , slice_obj : slice , axis : int ):
1666- # caller is responsible for ensuring non-None axis
1667- obj = self .obj
1668-
1669- if not need_slice (slice_obj ):
1670- return obj .copy (deep = False )
1671-
1672- indexer = self ._convert_slice_indexer (slice_obj , axis )
1673- return self ._slice (indexer , axis = axis , kind = "iloc" )
1674-
16751665
16761666class _LocationIndexer (_NDFrameIndexer ):
16771667 _takeable : bool = False
@@ -1706,27 +1696,6 @@ def _getbool_axis(self, key, axis: int):
17061696 inds = key .nonzero ()[0 ]
17071697 return self .obj .take (inds , axis = axis )
17081698
1709- def _get_slice_axis (self , slice_obj : slice , axis : int ):
1710- """
1711- This is pretty simple as we just have to deal with labels.
1712- """
1713- # caller is responsible for ensuring non-None axis
1714- obj = self .obj
1715- if not need_slice (slice_obj ):
1716- return obj .copy (deep = False )
1717-
1718- labels = obj ._get_axis (axis )
1719- indexer = labels .slice_indexer (
1720- slice_obj .start , slice_obj .stop , slice_obj .step , kind = self .name
1721- )
1722-
1723- if isinstance (indexer , slice ):
1724- return self ._slice (indexer , axis = axis , kind = "iloc" )
1725- else :
1726- # DatetimeIndex overrides Index.slice_indexer and may
1727- # return a DatetimeIndex instead of a slice object.
1728- return self .obj .take (indexer , axis = axis )
1729-
17301699
17311700@Appender (IndexingMixin .loc .__doc__ )
17321701class _LocIndexer (_LocationIndexer ):
@@ -1881,14 +1850,34 @@ def _getitem_axis(self, key, axis: int):
18811850 self ._validate_key (key , axis )
18821851 return self ._get_label (key , axis = axis )
18831852
1853+ def _get_slice_axis (self , slice_obj : slice , axis : int ):
1854+ """
1855+ This is pretty simple as we just have to deal with labels.
1856+ """
1857+ # caller is responsible for ensuring non-None axis
1858+ obj = self .obj
1859+ if not need_slice (slice_obj ):
1860+ return obj .copy (deep = False )
1861+
1862+ labels = obj ._get_axis (axis )
1863+ indexer = labels .slice_indexer (
1864+ slice_obj .start , slice_obj .stop , slice_obj .step , kind = self .name
1865+ )
1866+
1867+ if isinstance (indexer , slice ):
1868+ return self ._slice (indexer , axis = axis , kind = "iloc" )
1869+ else :
1870+ # DatetimeIndex overrides Index.slice_indexer and may
1871+ # return a DatetimeIndex instead of a slice object.
1872+ return self .obj .take (indexer , axis = axis )
1873+
18841874
18851875@Appender (IndexingMixin .iloc .__doc__ )
18861876class _iLocIndexer (_LocationIndexer ):
18871877 _valid_types = (
18881878 "integer, integer slice (START point is INCLUDED, END "
18891879 "point is EXCLUDED), listlike of integers, boolean array"
18901880 )
1891- _get_slice_axis = _NDFrameIndexer ._get_slice_axis
18921881 _takeable = True
18931882
18941883 def _validate_key (self , key , axis : int ):
@@ -2051,6 +2040,16 @@ def _getitem_axis(self, key, axis: int):
20512040
20522041 return self ._get_loc (key , axis = axis )
20532042
2043+ def _get_slice_axis (self , slice_obj : slice , axis : int ):
2044+ # caller is responsible for ensuring non-None axis
2045+ obj = self .obj
2046+
2047+ if not need_slice (slice_obj ):
2048+ return obj .copy (deep = False )
2049+
2050+ indexer = self ._convert_slice_indexer (slice_obj , axis )
2051+ return self ._slice (indexer , axis = axis , kind = "iloc" )
2052+
20542053 def _convert_to_indexer (self , key , axis : int ):
20552054 """
20562055 Much simpler as we only have to deal with our valid types.
0 commit comments