77
88import numpy as np
99
10- from pandas ._libs import Timedelta , Timestamp , internals as libinternals , lib
10+ from pandas ._libs import internals as libinternals , lib
1111from pandas ._typing import ArrayLike , DtypeObj , Label , Scalar
1212from pandas .util ._validators import validate_bool_kwarg
1313
1414from pandas .core .dtypes .cast import (
1515 find_common_type ,
1616 infer_dtype_from_scalar ,
17- maybe_convert_objects ,
1817 maybe_promote ,
1918)
2019from pandas .core .dtypes .common import (
3332import pandas .core .algorithms as algos
3433from pandas .core .arrays .sparse import SparseDtype
3534from pandas .core .base import PandasObject
35+ import pandas .core .common as com
3636from pandas .core .construction import extract_array
3737from pandas .core .indexers import maybe_convert_indices
3838from pandas .core .indexes .api import Index , ensure_index
@@ -626,11 +626,8 @@ def comp(s, regex=False):
626626 """
627627 if isna (s ):
628628 return isna (values )
629- if isinstance (s , (Timedelta , Timestamp )) and getattr (s , "tz" , None ) is None :
630629
631- return _compare_or_regex_search (
632- maybe_convert_objects (values ), s .asm8 , regex
633- )
630+ s = com .maybe_box_datetimelike (s )
634631 return _compare_or_regex_search (values , s , regex )
635632
636633 masks = [comp (s , regex ) for s in src_list ]
@@ -643,11 +640,10 @@ def comp(s, regex=False):
643640 # replace ALWAYS will return a list
644641 rb = [blk if inplace else blk .copy ()]
645642 for i , (s , d ) in enumerate (zip (src_list , dest_list )):
646- # TODO: assert/validate that `d` is always a scalar?
647643 new_rb : List [Block ] = []
648644 for b in rb :
649645 m = masks [i ][b .mgr_locs .indexer ]
650- convert = i == src_len
646+ convert = i == src_len # only convert once at the end
651647 result = b ._replace_coerce (
652648 mask = m ,
653649 to_replace = s ,
0 commit comments