@@ -627,7 +627,7 @@ def iat(self) -> _iAtIndexer:
627
627
628
628
class _LocationIndexer (NDFrameIndexerBase ):
629
629
_valid_types : str
630
- axis = None
630
+ axis : int | None = None
631
631
632
632
@final
633
633
def __call__ (self , axis = None ):
@@ -652,7 +652,7 @@ def _get_setitem_indexer(self, key):
652
652
check_deprecated_indexers (x )
653
653
654
654
if self .axis is not None :
655
- key = self . _tupleize_axis_indexer (key )
655
+ key = _tupleize_axis_indexer (self . ndim , self . axis , key )
656
656
657
657
ax = self .obj ._get_axis (0 )
658
658
@@ -737,17 +737,6 @@ def _maybe_mask_setitem_value(self, indexer, value):
737
737
738
738
return indexer , value
739
739
740
- @final
741
- def _tupleize_axis_indexer (self , key ) -> tuple :
742
- """
743
- If we have an axis, adapt the given key to be axis-independent.
744
- """
745
- new_key = [slice (None )] * self .ndim
746
- # error: Invalid index type "Optional[Any]" for "List[slice]"; expected
747
- # type "SupportsIndex"
748
- new_key [self .axis ] = key # type: ignore[index]
749
- return tuple (new_key )
750
-
751
740
@final
752
741
def _ensure_listlike_indexer (self , key , axis = None , value = None ):
753
742
"""
@@ -1621,7 +1610,7 @@ def _get_setitem_indexer(self, key):
1621
1610
key = list (key )
1622
1611
1623
1612
if self .axis is not None :
1624
- key = self . _tupleize_axis_indexer (key )
1613
+ key = _tupleize_axis_indexer (self . ndim , self . axis , key )
1625
1614
1626
1615
return key
1627
1616
@@ -2137,13 +2126,11 @@ def _ensure_iterable_column_indexer(self, column_indexer):
2137
2126
"""
2138
2127
Ensure that our column indexer is something that can be iterated over.
2139
2128
"""
2140
- ilocs : Sequence [int ]
2129
+ ilocs : Sequence [int ] | np . ndarray
2141
2130
if is_integer (column_indexer ):
2142
2131
ilocs = [column_indexer ]
2143
2132
elif isinstance (column_indexer , slice ):
2144
- ilocs = np .arange (len (self .obj .columns ))[ # type: ignore[assignment]
2145
- column_indexer
2146
- ]
2133
+ ilocs = np .arange (len (self .obj .columns ))[column_indexer ]
2147
2134
elif isinstance (column_indexer , np .ndarray ) and is_bool_dtype (
2148
2135
column_indexer .dtype
2149
2136
):
@@ -2201,18 +2188,16 @@ def ravel(i):
2201
2188
# TODO: This is hacky, align Series and DataFrame behavior GH#45778
2202
2189
if obj .ndim == 2 and is_empty_indexer (indexer [0 ]):
2203
2190
return ser ._values .copy ()
2204
- ser = ser .reindex (obj .axes [0 ][indexer [0 ]], copy = True )._values
2191
+ ser_values = ser .reindex (obj .axes [0 ][indexer [0 ]], copy = True )._values
2205
2192
2206
2193
# single indexer
2207
2194
if len (indexer ) > 1 and not multiindex_indexer :
2208
2195
len_indexer = len (indexer [1 ])
2209
- ser = (
2210
- np .tile (ser , len_indexer ) # type: ignore[assignment]
2211
- .reshape (len_indexer , - 1 )
2212
- .T
2196
+ ser_values = (
2197
+ np .tile (ser_values , len_indexer ).reshape (len_indexer , - 1 ).T
2213
2198
)
2214
2199
2215
- return ser
2200
+ return ser_values
2216
2201
2217
2202
for i , idx in enumerate (indexer ):
2218
2203
ax = obj .axes [i ]
@@ -2428,6 +2413,15 @@ def _tuplify(ndim: int, loc: Hashable) -> tuple[Hashable | slice, ...]:
2428
2413
return tuple (_tup )
2429
2414
2430
2415
2416
+ def _tupleize_axis_indexer (ndim : int , axis : int , key ) -> tuple :
2417
+ """
2418
+ If we have an axis, adapt the given key to be axis-independent.
2419
+ """
2420
+ new_key = [slice (None )] * ndim
2421
+ new_key [axis ] = key
2422
+ return tuple (new_key )
2423
+
2424
+
2431
2425
def convert_to_index_sliceable (obj : DataFrame , key ):
2432
2426
"""
2433
2427
If we are index sliceable, then return my slicer, otherwise return None.
0 commit comments