@@ -3455,15 +3455,6 @@ def select_dtypes(self, include=None, exclude=None):
3455
3455
5 False 2.0
3456
3456
"""
3457
3457
3458
- def _get_info_slice (obj , indexer ):
3459
- """Slice the info axis of `obj` with `indexer`."""
3460
- if not hasattr (obj , "_info_axis_number" ):
3461
- msg = "object of type {typ!r} has no info axis"
3462
- raise TypeError (msg .format (typ = type (obj ).__name__ ))
3463
- slices = [slice (None )] * obj .ndim
3464
- slices [obj ._info_axis_number ] = indexer
3465
- return tuple (slices )
3466
-
3467
3458
if not is_list_like (include ):
3468
3459
include = (include ,) if include is not None else ()
3469
3460
if not is_list_like (exclude ):
@@ -3491,27 +3482,31 @@ def _get_info_slice(obj, indexer):
3491
3482
# We raise when both include and exclude are empty
3492
3483
# Hence, we can just shrink the columns we want to keep
3493
3484
keep_these = Series (True , index = self .columns )
3494
- unique_dtypes = self .dtypes .unique ()
3495
3485
3496
- def filter_unique_dtypes_on (selection , unqiue_dtypes ):
3497
- result = [
3498
- dtype
3499
- for dtype in unique_dtypes
3500
- if any (
3501
- issubclass (dtype .type , selected_type ) for selected_type in selection
3502
- )
3503
- ]
3504
- return result
3486
+ def extract_unique_dtypes_from_dtypes_list (
3487
+ dtypes_list : List [Type ], unique_dtypes : List [Type ]
3488
+ ) -> List [Type ]:
3489
+ extracted_dtypes = []
3490
+ for unique_dtype in unique_dtypes :
3491
+ if any (issubclass (unique_dtype .type , dtype ) for dtype in dtypes_list ):
3492
+ extracted_dtypes .append (unique_dtype )
3493
+ return extracted_dtypes
3494
+
3495
+ unique_dtypes = self .dtypes .unique ()
3505
3496
3506
3497
if include :
3507
- included_dtypes = filter_unique_dtypes_on (include , unique_dtypes )
3498
+ included_dtypes = extract_unique_dtypes_from_dtypes_list (
3499
+ include , unique_dtypes
3500
+ )
3508
3501
keep_these &= self .dtypes .isin (included_dtypes )
3509
3502
3510
3503
if exclude :
3511
- excluded_dtypes = filter_unique_dtypes_on (exclude , unique_dtypes )
3504
+ excluded_dtypes = extract_unique_dtypes_from_dtypes_list (
3505
+ exclude , unique_dtypes
3506
+ )
3512
3507
keep_these &= ~ self .dtypes .isin (excluded_dtypes )
3513
3508
3514
- return self .loc [ _get_info_slice ( self , keep_these ) ]
3509
+ return self .iloc [: , keep_these . values ]
3515
3510
3516
3511
def insert (self , loc , column , value , allow_duplicates = False ):
3517
3512
"""
0 commit comments