7
7
8
8
import numpy as np
9
9
10
- from pandas ._libs import Timedelta , Timestamp , internals as libinternals , lib
10
+ from pandas ._libs import internals as libinternals , lib
11
11
from pandas ._typing import ArrayLike , DtypeObj , Label , Scalar
12
12
from pandas .util ._validators import validate_bool_kwarg
13
13
14
14
from pandas .core .dtypes .cast import (
15
15
find_common_type ,
16
16
infer_dtype_from_scalar ,
17
- maybe_convert_objects ,
18
17
maybe_promote ,
19
18
)
20
19
from pandas .core .dtypes .common import (
33
32
import pandas .core .algorithms as algos
34
33
from pandas .core .arrays .sparse import SparseDtype
35
34
from pandas .core .base import PandasObject
35
+ import pandas .core .common as com
36
36
from pandas .core .construction import extract_array
37
37
from pandas .core .indexers import maybe_convert_indices
38
38
from pandas .core .indexes .api import Index , ensure_index
@@ -626,11 +626,8 @@ def comp(s, regex=False):
626
626
"""
627
627
if isna (s ):
628
628
return isna (values )
629
- if isinstance (s , (Timedelta , Timestamp )) and getattr (s , "tz" , None ) is None :
630
629
631
- return _compare_or_regex_search (
632
- maybe_convert_objects (values ), s .asm8 , regex
633
- )
630
+ s = com .maybe_box_datetimelike (s )
634
631
return _compare_or_regex_search (values , s , regex )
635
632
636
633
masks = [comp (s , regex ) for s in src_list ]
@@ -643,11 +640,10 @@ def comp(s, regex=False):
643
640
# replace ALWAYS will return a list
644
641
rb = [blk if inplace else blk .copy ()]
645
642
for i , (s , d ) in enumerate (zip (src_list , dest_list )):
646
- # TODO: assert/validate that `d` is always a scalar?
647
643
new_rb : List [Block ] = []
648
644
for b in rb :
649
645
m = masks [i ][b .mgr_locs .indexer ]
650
- convert = i == src_len
646
+ convert = i == src_len # only convert once at the end
651
647
result = b ._replace_coerce (
652
648
mask = m ,
653
649
to_replace = s ,
0 commit comments