Skip to content

Commit eca512c

Browse files
committed
BUG: Handle NaT explicitly.
1 parent 6fbc9ce commit eca512c

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

pandas/tslib.pyx

+19-7
Original file line numberDiff line numberDiff line change
@@ -1516,8 +1516,12 @@ cdef inline void _localize_tso(_TSObject obj, object tz):
15161516
dt = datetime(obj.dts.year, obj.dts.month, obj.dts.day, obj.dts.hour,
15171517
obj.dts.min, obj.dts.sec, obj.dts.us, tz)
15181518
delta = int(total_seconds(_get_utcoffset(tz, dt))) * 1000000000
1519-
pandas_datetime_to_datetimestruct(obj.value + delta,
1520-
PANDAS_FR_ns, &obj.dts)
1519+
if obj.value != NPY_NAT:
1520+
pandas_datetime_to_datetimestruct(obj.value + delta,
1521+
PANDAS_FR_ns, &obj.dts)
1522+
else:
1523+
pandas_datetime_to_datetimestruct(obj.value,
1524+
PANDAS_FR_ns, &obj.dts)
15211525
obj.tzinfo = tz
15221526
else:
15231527
# Adjust datetime64 timestamp, recompute datetimestruct
@@ -1529,20 +1533,28 @@ cdef inline void _localize_tso(_TSObject obj, object tz):
15291533
# static/pytz/dateutil specific code
15301534
if _is_fixed_offset(tz):
15311535
# statictzinfo
1532-
if len(deltas) > 0:
1536+
if len(deltas) > 0 and obj.value != NPY_NAT:
15331537
pandas_datetime_to_datetimestruct(obj.value + deltas[0],
15341538
PANDAS_FR_ns, &obj.dts)
15351539
else:
15361540
pandas_datetime_to_datetimestruct(obj.value, PANDAS_FR_ns, &obj.dts)
15371541
obj.tzinfo = tz
15381542
elif _treat_tz_as_pytz(tz):
15391543
inf = tz._transition_info[pos]
1540-
pandas_datetime_to_datetimestruct(obj.value + deltas[pos],
1541-
PANDAS_FR_ns, &obj.dts)
1544+
if obj.value != NPY_NAT:
1545+
pandas_datetime_to_datetimestruct(obj.value + deltas[pos],
1546+
PANDAS_FR_ns, &obj.dts)
1547+
else:
1548+
pandas_datetime_to_datetimestruct(obj.value,
1549+
PANDAS_FR_ns, &obj.dts)
15421550
obj.tzinfo = tz._tzinfos[inf]
15431551
elif _treat_tz_as_dateutil(tz):
1544-
pandas_datetime_to_datetimestruct(obj.value + deltas[pos],
1545-
PANDAS_FR_ns, &obj.dts)
1552+
if obj.value != NPY_NAT:
1553+
pandas_datetime_to_datetimestruct(obj.value + deltas[pos],
1554+
PANDAS_FR_ns, &obj.dts)
1555+
else:
1556+
pandas_datetime_to_datetimestruct(obj.value,
1557+
PANDAS_FR_ns, &obj.dts)
15461558
obj.tzinfo = tz
15471559
else:
15481560
obj.tzinfo = tz

0 commit comments

Comments
 (0)