Skip to content

pandas.to_datetime raises when given pd.NA #32213

Closed
@dsaxton

Description

@dsaxton

to_datetime raises when we pass in pd.NA but it should probably convert to pd.NaT, I think (or at least this would be better than an error)?

In [1]: import pandas as pd                                                                                                                                            

In [2]: pd.to_datetime([pd.NA])                                                                                                                                        
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-2-1af314749017> in <module>
----> 1 pd.to_datetime([pd.NA])

~/pandas/pandas/core/tools/datetimes.py in to_datetime(arg, errors, dayfirst, yearfirst, utc, format, exact, unit, infer_datetime_format, origin, cache)
    755             result = _convert_and_box_cache(arg, cache_array)
    756         else:
--> 757             result = convert_listlike(arg, format)
    758     else:
    759         result = convert_listlike(np.array([arg]), format)[0]

~/pandas/pandas/core/tools/datetimes.py in _convert_listlike_datetimes(arg, format, name, tz, unit, errors, infer_datetime_format, dayfirst, yearfirst, exact)
    447             errors=errors,
    448             require_iso8601=require_iso8601,
--> 449             allow_object=True,
    450         )
    451 

~/pandas/pandas/core/arrays/datetimes.py in objects_to_datetime64ns(data, dayfirst, yearfirst, utc, errors, require_iso8601, allow_object)
   1848             dayfirst=dayfirst,
   1849             yearfirst=yearfirst,
-> 1850             require_iso8601=require_iso8601,
   1851         )
   1852     except ValueError as e:

~/pandas/pandas/_libs/tslib.pyx in pandas._libs.tslib.array_to_datetime()
    479 @cython.wraparound(False)
    480 @cython.boundscheck(False)
--> 481 cpdef array_to_datetime(ndarray[object] values, str errors='raise',
    482                         bint dayfirst=False, bint yearfirst=False,
    483                         object utc=None, bint require_iso8601=False):

~/pandas/pandas/_libs/tslib.pyx in pandas._libs.tslib.array_to_datetime()
    701 
    702     except TypeError:
--> 703         return array_to_datetime_object(values, errors,
    704                                         dayfirst, yearfirst)
    705 

~/pandas/pandas/_libs/tslib.pyx in pandas._libs.tslib.array_to_datetime_object()
    839         else:
    840             if is_raise:
--> 841                 raise
    842             return values, None
    843     return oresult, None

~/pandas/pandas/_libs/tslib.pyx in pandas._libs.tslib.array_to_datetime()
    674                         iresult[i] = NPY_NAT
    675                     else:
--> 676                         raise TypeError(f"{type(val)} is not convertible to datetime")
    677 
    678             except OutOfBoundsDatetime:

TypeError: <class 'pandas._libs.missing.NAType'> is not convertible to datetime

In [3]: pd.__version__                                                                                                                                                 
Out[3]: '1.1.0.dev0+572.gaa6f241f5'

Expected Output

DatetimeIndex(['NaT'], dtype='datetime64[ns]', freq=None)

Metadata

Metadata

Assignees

No one assigned

    Labels

    DatetimeDatetime data dtypeNA - MaskedArraysRelated to pd.NA and nullable extension arrays

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions