36
36
FillnaOptions ,
37
37
IgnoreRaise ,
38
38
QuantileInterpolation ,
39
+ Self ,
39
40
Shape ,
40
41
npt ,
41
42
)
@@ -259,36 +260,41 @@ def __len__(self) -> int:
259
260
return len (self .values )
260
261
261
262
@final
262
- def getitem_block (self , slicer : slice | npt .NDArray [np .intp ]) -> Block :
263
+ def slice_block_columns (self , slc : slice ) -> Self :
264
+ """
265
+ Perform __getitem__-like, return result as block.
266
+ """
267
+ new_mgr_locs = self ._mgr_locs [slc ]
268
+
269
+ new_values = self ._slice (slc )
270
+ refs = self .refs
271
+ return type (self )(new_values , new_mgr_locs , self .ndim , refs = refs )
272
+
273
+ @final
274
+ def take_block_columns (self , indices : npt .NDArray [np .intp ]) -> Self :
263
275
"""
264
276
Perform __getitem__-like, return result as block.
265
277
266
278
Only supports slices that preserve dimensionality.
267
279
"""
268
- # Note: the only place where we are called with ndarray[intp]
269
- # is from internals.concat, and we can verify that never happens
270
- # with 1-column blocks, i.e. never for ExtensionBlock.
280
+ # Note: only called from is from internals.concat, and we can verify
281
+ # that never happens with 1-column blocks, i.e. never for ExtensionBlock.
271
282
272
- new_mgr_locs = self ._mgr_locs [slicer ]
283
+ new_mgr_locs = self ._mgr_locs [indices ]
273
284
274
- new_values = self ._slice (slicer )
275
- refs = self .refs if isinstance (slicer , slice ) else None
276
- return type (self )(new_values , new_mgr_locs , self .ndim , refs = refs )
285
+ new_values = self ._slice (indices )
286
+ return type (self )(new_values , new_mgr_locs , self .ndim , refs = None )
277
287
278
288
@final
279
289
def getitem_block_columns (
280
290
self , slicer : slice , new_mgr_locs : BlockPlacement
281
- ) -> Block :
291
+ ) -> Self :
282
292
"""
283
293
Perform __getitem__-like, return result as block.
284
294
285
295
Only supports slices that preserve dimensionality.
286
296
"""
287
297
new_values = self ._slice (slicer )
288
-
289
- if new_values .ndim != self .values .ndim :
290
- raise ValueError ("Only same dim slicing is allowed" )
291
-
292
298
return type (self )(new_values , new_mgr_locs , self .ndim , refs = self .refs )
293
299
294
300
@final
@@ -1997,7 +2003,7 @@ def _slice(
1997
2003
-------
1998
2004
ExtensionArray
1999
2005
"""
2000
- # Notes: ndarray[bool] is only reachable when via getitem_mgr , which
2006
+ # Notes: ndarray[bool] is only reachable when via get_rows_with_mask , which
2001
2007
# is only for Series, i.e. self.ndim == 1.
2002
2008
2003
2009
# return same dims as we currently have
@@ -2023,7 +2029,7 @@ def _slice(
2023
2029
return self .values [slicer ]
2024
2030
2025
2031
@final
2026
- def getitem_block_index (self , slicer : slice ) -> ExtensionBlock :
2032
+ def slice_block_rows (self , slicer : slice ) -> Self :
2027
2033
"""
2028
2034
Perform __getitem__-like specialized to slicing along index.
2029
2035
"""
0 commit comments