Skip to content

Commit 62895af

Browse files
committed
WIP: attempt to fix pd.NaT plotting
Some progress on pandas-dev#9253. Note: this did not work. I'm not quite sure why.
1 parent 0a444d3 commit 62895af

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

pandas/tseries/converter.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
def register():
2828
units.registry[lib.Timestamp] = DatetimeConverter()
29+
units.registry[lib.NaT] = DatetimeConverter()
2930
units.registry[Period] = PeriodConverter()
3031
units.registry[pydt.datetime] = DatetimeConverter()
3132
units.registry[pydt.date] = DatetimeConverter()
@@ -150,6 +151,8 @@ def _dt_to_float_ordinal(dt):
150151
"""
151152
if isinstance(dt, (np.ndarray, Index, Series)) and com.is_datetime64_ns_dtype(dt):
152153
base = dates.epoch2num(dt.asi8 / 1.0E9)
154+
elif dt is lib.NaT:
155+
base = np.nan
153156
else:
154157
base = dates.date2num(dt)
155158
return base
@@ -166,7 +169,7 @@ def try_parse(values):
166169
except Exception:
167170
return values
168171

169-
if isinstance(values, (datetime, pydt.date)):
172+
if isinstance(values, (datetime, pydt.date)) or values is lib.NaT:
170173
return _dt_to_float_ordinal(values)
171174
elif isinstance(values, np.datetime64):
172175
return _dt_to_float_ordinal(lib.Timestamp(values))

pandas/tseries/tests/test_plotting.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from numpy.testing.decorators import slow
88
from numpy.testing import assert_array_equal
99

10-
from pandas import Index, Series, DataFrame
10+
from pandas import Index, Series, DataFrame, NaT
1111

1212
from pandas.tseries.index import date_range, bdate_range
1313
from pandas.tseries.offsets import DateOffset
@@ -1102,6 +1102,11 @@ def test_secondary_y_irregular_ts_xlim(self):
11021102
self.assertEqual(left, ts_irregular.index.min().toordinal())
11031103
self.assertEqual(right, ts_irregular.index.max().toordinal())
11041104

1105+
@slow
1106+
def test_plot_nat(self):
1107+
import matplotlib.pyplot as plt
1108+
plt.plot(NaT, 5)
1109+
11051110

11061111
def _check_plot_works(f, freq=None, series=None, *args, **kwargs):
11071112
import matplotlib.pyplot as plt

0 commit comments

Comments
 (0)