Skip to content

Commit 7d35dae

Browse files
committed
fix pandas-dev#59772: tz_aware series with NaT raises exception on to_numpy
1 parent dc8401a commit 7d35dae

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

Diff for: pandas/core/arrays/base.py

+11-1
Original file line numberDiff line numberDiff line change
@@ -592,7 +592,17 @@ def to_numpy(
592592
-------
593593
numpy.ndarray
594594
"""
595-
result = np.asarray(self, dtype=dtype)
595+
if dtype == "datetime64" and self.dtype.kind == "M":
596+
# Make sure NaT is not tz_aware
597+
result = np.array(
598+
[
599+
np.datetime64("NaT", "s") if isna(x) else x.tz_localize(None).asm8
600+
for x in self
601+
],
602+
dtype="datetime64[s]",
603+
)
604+
else:
605+
result = np.asarray(self, dtype=dtype)
596606
if copy or na_value is not lib.no_default:
597607
result = result.copy()
598608
if na_value is not lib.no_default:

Diff for: pandas/tests/arrays/test_datetimelike.py

+8
Original file line numberDiff line numberDiff line change
@@ -1356,3 +1356,11 @@ def test_from_pandas_array(dtype):
13561356
result = idx_cls(arr)
13571357
expected = idx_cls(data)
13581358
tm.assert_index_equal(result, expected)
1359+
1360+
1361+
def test_to_numpy_with_NaT_tz_aware():
1362+
# GH#59772
1363+
1364+
result = pd.Series(NaT).dt.tz_localize("UTC").to_numpy("datetime64")
1365+
expected = pd.Series(NaT).to_numpy("datetime64")
1366+
tm.assert_equal(result, expected)

0 commit comments

Comments
 (0)