Skip to content

Commit ecc72f4

Browse files
authored
CLN: inline indexing 1-liners (#31625)
1 parent d0c84ce commit ecc72f4

File tree

3 files changed

+19
-29
lines changed

3 files changed

+19
-29
lines changed

pandas/core/generic.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -3498,7 +3498,9 @@ def _iget_item_cache(self, item):
34983498
def _box_item_values(self, key, values):
34993499
raise AbstractMethodError(self)
35003500

3501-
def _slice(self: FrameOrSeries, slobj: slice, axis=0, kind=None) -> FrameOrSeries:
3501+
def _slice(
3502+
self: FrameOrSeries, slobj: slice, axis=0, kind: str = "getitem"
3503+
) -> FrameOrSeries:
35023504
"""
35033505
Construct a slice of this container.
35043506

pandas/core/indexing.py

+13-26
Original file line numberDiff line numberDiff line change
@@ -591,12 +591,6 @@ def _get_label(self, label, axis: int):
591591

592592
return self.obj._xs(label, axis=axis)
593593

594-
def _get_loc(self, key: int, axis: int):
595-
return self.obj._ixs(key, axis=axis)
596-
597-
def _slice(self, obj, axis: int, kind=None):
598-
return self.obj._slice(obj, axis=axis, kind=kind)
599-
600594
def _get_setitem_indexer(self, key):
601595
if self.axis is not None:
602596
return self._convert_tuple(key, is_setter=True)
@@ -702,17 +696,6 @@ def _convert_tuple(self, key, is_setter: bool = False):
702696
keyidx.append(idx)
703697
return tuple(keyidx)
704698

705-
def _convert_scalar_indexer(self, key, axis: int):
706-
# if we are accessing via lowered dim, use the last dim
707-
ax = self.obj._get_axis(min(axis, self.ndim - 1))
708-
# a scalar
709-
return ax._convert_scalar_indexer(key, kind=self.name)
710-
711-
def _convert_slice_indexer(self, key: slice, axis: int):
712-
# if we are accessing via lowered dim, use the last dim
713-
ax = self.obj._get_axis(min(axis, self.ndim - 1))
714-
return ax._convert_slice_indexer(key, kind=self.name)
715-
716699
def _has_valid_setitem_indexer(self, indexer) -> bool:
717700
return True
718701

@@ -1627,7 +1610,8 @@ def _validate_key(self, key, axis: int):
16271610
return
16281611

16291612
if not is_list_like_indexer(key):
1630-
self._convert_scalar_indexer(key, axis)
1613+
labels = self.obj._get_axis(axis)
1614+
labels._convert_scalar_indexer(key, kind="loc")
16311615

16321616
def _is_scalar_access(self, key: Tuple) -> bool:
16331617
"""
@@ -1772,7 +1756,7 @@ def _get_slice_axis(self, slice_obj: slice, axis: int):
17721756
)
17731757

17741758
if isinstance(indexer, slice):
1775-
return self._slice(indexer, axis=axis, kind="iloc")
1759+
return self.obj._slice(indexer, axis=axis, kind="iloc")
17761760
else:
17771761
# DatetimeIndex overrides Index.slice_indexer and may
17781762
# return a DatetimeIndex instead of a slice object.
@@ -1796,12 +1780,12 @@ def _convert_to_indexer(self, key, axis: int, is_setter: bool = False):
17961780
labels = self.obj._get_axis(axis)
17971781

17981782
if isinstance(key, slice):
1799-
return self._convert_slice_indexer(key, axis)
1783+
return labels._convert_slice_indexer(key, kind="loc")
18001784

18011785
if is_scalar(key):
18021786
# try to find out correct indexer, if not type correct raise
18031787
try:
1804-
key = self._convert_scalar_indexer(key, axis)
1788+
key = labels._convert_scalar_indexer(key, kind="loc")
18051789
except TypeError:
18061790
# but we will allow setting
18071791
if not is_setter:
@@ -2025,7 +2009,7 @@ def _getitem_axis(self, key, axis: int):
20252009
# validate the location
20262010
self._validate_integer(key, axis)
20272011

2028-
return self._get_loc(key, axis=axis)
2012+
return self.obj._ixs(key, axis=axis)
20292013

20302014
def _get_slice_axis(self, slice_obj: slice, axis: int):
20312015
# caller is responsible for ensuring non-None axis
@@ -2034,19 +2018,22 @@ def _get_slice_axis(self, slice_obj: slice, axis: int):
20342018
if not need_slice(slice_obj):
20352019
return obj.copy(deep=False)
20362020

2037-
indexer = self._convert_slice_indexer(slice_obj, axis)
2038-
return self._slice(indexer, axis=axis, kind="iloc")
2021+
labels = obj._get_axis(axis)
2022+
indexer = labels._convert_slice_indexer(slice_obj, kind="iloc")
2023+
return self.obj._slice(indexer, axis=axis, kind="iloc")
20392024

20402025
def _convert_to_indexer(self, key, axis: int, is_setter: bool = False):
20412026
"""
20422027
Much simpler as we only have to deal with our valid types.
20432028
"""
2029+
labels = self.obj._get_axis(axis)
2030+
20442031
# make need to convert a float key
20452032
if isinstance(key, slice):
2046-
return self._convert_slice_indexer(key, axis)
2033+
return labels._convert_slice_indexer(key, kind="iloc")
20472034

20482035
elif is_float(key):
2049-
return self._convert_scalar_indexer(key, axis)
2036+
return labels._convert_scalar_indexer(key, kind="iloc")
20502037

20512038
self._validate_key(key, axis)
20522039
return key

pandas/core/series.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -840,8 +840,9 @@ def _ixs(self, i: int, axis: int = 0):
840840
"""
841841
return self._values[i]
842842

843-
def _slice(self, slobj: slice, axis: int = 0, kind=None) -> "Series":
844-
slobj = self.index._convert_slice_indexer(slobj, kind=kind or "getitem")
843+
def _slice(self, slobj: slice, axis: int = 0, kind: str = "getitem") -> "Series":
844+
assert kind in ["getitem", "iloc"]
845+
slobj = self.index._convert_slice_indexer(slobj, kind=kind)
845846
return self._get_values(slobj)
846847

847848
def __getitem__(self, key):

0 commit comments

Comments
 (0)