@@ -1662,16 +1662,6 @@ def _convert_to_indexer(self, key, axis: int):
1662
1662
return {"key" : key }
1663
1663
raise
1664
1664
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
-
1675
1665
1676
1666
class _LocationIndexer (_NDFrameIndexer ):
1677
1667
_takeable : bool = False
@@ -1706,27 +1696,6 @@ def _getbool_axis(self, key, axis: int):
1706
1696
inds = key .nonzero ()[0 ]
1707
1697
return self .obj .take (inds , axis = axis )
1708
1698
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
-
1730
1699
1731
1700
@Appender (IndexingMixin .loc .__doc__ )
1732
1701
class _LocIndexer (_LocationIndexer ):
@@ -1881,14 +1850,34 @@ def _getitem_axis(self, key, axis: int):
1881
1850
self ._validate_key (key , axis )
1882
1851
return self ._get_label (key , axis = axis )
1883
1852
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
+
1884
1874
1885
1875
@Appender (IndexingMixin .iloc .__doc__ )
1886
1876
class _iLocIndexer (_LocationIndexer ):
1887
1877
_valid_types = (
1888
1878
"integer, integer slice (START point is INCLUDED, END "
1889
1879
"point is EXCLUDED), listlike of integers, boolean array"
1890
1880
)
1891
- _get_slice_axis = _NDFrameIndexer ._get_slice_axis
1892
1881
_takeable = True
1893
1882
1894
1883
def _validate_key (self , key , axis : int ):
@@ -2051,6 +2040,16 @@ def _getitem_axis(self, key, axis: int):
2051
2040
2052
2041
return self ._get_loc (key , axis = axis )
2053
2042
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
+
2054
2053
def _convert_to_indexer (self , key , axis : int ):
2055
2054
"""
2056
2055
Much simpler as we only have to deal with our valid types.
0 commit comments