From 00e5f178d9cde705503d14d5a48efa788cf57ebd Mon Sep 17 00:00:00 2001 From: Brock Date: Fri, 9 Oct 2020 19:35:14 -0700 Subject: [PATCH] CLN: require td64 in TimedeltaBlock --- pandas/core/internals/blocks.py | 6 +++++- pandas/core/missing.py | 6 +++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/pandas/core/internals/blocks.py b/pandas/core/internals/blocks.py index be105f0035447..0a4aa6d0a203a 100644 --- a/pandas/core/internals/blocks.py +++ b/pandas/core/internals/blocks.py @@ -2377,7 +2377,11 @@ class TimeDeltaBlock(DatetimeLikeBlockMixin, IntBlock): def _maybe_coerce_values(self, values): if values.dtype != TD64NS_DTYPE: - # e.g. non-nano or int64 + # non-nano we will convert to nano + if values.dtype.kind != "m": + # caller is responsible for ensuring timedelta64 dtype + raise TypeError(values.dtype) # pragma: no cover + values = TimedeltaArray._from_sequence(values)._data if isinstance(values, TimedeltaArray): values = values._data diff --git a/pandas/core/missing.py b/pandas/core/missing.py index f2ec04c1fc05d..52536583b9b0d 100644 --- a/pandas/core/missing.py +++ b/pandas/core/missing.py @@ -573,9 +573,9 @@ def interpolate_2d( if ndim == 1: result = result[0] - if orig_values.dtype.kind == "M": - # convert float back to datetime64 - result = result.astype(orig_values.dtype) + if orig_values.dtype.kind in ["m", "M"]: + # convert float back to datetime64/timedelta64 + result = result.view(orig_values.dtype) return result