From 54abdf1be2bef12eb0242355d70b74b2226bb11f Mon Sep 17 00:00:00 2001 From: Brock Date: Thu, 24 Dec 2020 10:56:17 -0800 Subject: [PATCH] CLN: algos.searchsorted --- pandas/core/algorithms.py | 13 +++++++------ pandas/core/internals/blocks.py | 7 ++----- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/pandas/core/algorithms.py b/pandas/core/algorithms.py index 1061eb087318b..2098392cf70a9 100644 --- a/pandas/core/algorithms.py +++ b/pandas/core/algorithms.py @@ -11,7 +11,7 @@ import numpy as np -from pandas._libs import Timestamp, algos, hashtable as htable, iNaT, lib +from pandas._libs import algos, hashtable as htable, iNaT, lib from pandas._typing import AnyArrayLike, ArrayLike, DtypeObj, FrameOrSeriesUnion from pandas.util._decorators import doc @@ -59,7 +59,11 @@ ) from pandas.core.dtypes.missing import isna, na_value_for_dtype -from pandas.core.construction import array, extract_array +from pandas.core.construction import ( + array, + ensure_wrapped_if_datetimelike, + extract_array, +) from pandas.core.indexers import validate_indices if TYPE_CHECKING: @@ -1906,10 +1910,7 @@ def searchsorted(arr, value, side="left", sorter=None) -> np.ndarray: ): # E.g. if `arr` is an array with dtype='datetime64[ns]' # and `value` is a pd.Timestamp, we may need to convert value - value_ser = array([value]) if is_scalar(value) else array(value) - value = value_ser[0] if is_scalar(value) else value_ser - if isinstance(value, Timestamp) and value.tzinfo is None: - value = value.to_datetime64() + arr = ensure_wrapped_if_datetimelike(arr) result = arr.searchsorted(value, side=side, sorter=sorter) return result diff --git a/pandas/core/internals/blocks.py b/pandas/core/internals/blocks.py index a3744519e9c2b..138a19779b831 100644 --- a/pandas/core/internals/blocks.py +++ b/pandas/core/internals/blocks.py @@ -1063,15 +1063,12 @@ def putmask(self, mask, new, axis: int = 0) -> List["Block"]: # We only get here for non-Extension Blocks, so _try_coerce_args # is only relevant for DatetimeBlock and TimedeltaBlock if self.dtype.kind in ["m", "M"]: - blk = self - if not inplace: - blk = self.copy() - arr = blk.array_values() + arr = self.array_values() arr = cast("NDArrayBackedExtensionArray", arr) if transpose: arr = arr.T arr.putmask(mask, new) - return [blk] + return [self] if lib.is_scalar(new): new = convert_scalar_for_putitemlike(new, self.values.dtype)