Skip to content

Commit 3d428f7

Browse files
committed
use dropna to drop NaT from timedelta before checking integer dtype compatibility
1 parent a54d5b3 commit 3d428f7

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

xarray/coding/times.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -669,8 +669,10 @@ def encode_cf_datetime(
669669
time_deltas = dates_as_index - ref_date
670670

671671
# Use floor division if time_delta evenly divides all differences
672-
# to preserve integer dtype if possible (GH 4045).
673-
if np.all(time_deltas % time_delta == np.timedelta64(0, "ns")):
672+
# to preserve integer dtype if possible (GH 4045)
673+
# NaT prevents us from using datetime64 directly, but we can safely coerce
674+
# to int64 in presence of NaT, so we just dropna before check.
675+
if np.all(time_deltas.dropna() % time_delta == np.timedelta64(0, "ns")):
674676
num = time_deltas // time_delta
675677
else:
676678
num = time_deltas / time_delta

0 commit comments

Comments
 (0)