Skip to content

API: NaT/nan mixed input coerces to timedelta64 #13467

Closed
@sinhrks

Description

@sinhrks

Code Sample, a copy-pastable example if possible

Index/Series results in datetime64 dtype if all inputs are pd.NaT.

pd.Index([pd.NaT, pd.NaT])
# DatetimeIndex(['NaT', 'NaT'], dtype='datetime64[ns]', freq=None)

pd.Series([pd.NaT, pd.NaT])
#0   NaT
#1   NaT
# dtype: datetime64[ns]

However, it coerces to timedelta64 if np.nan is included.

pd.Index([pd.NaT, np.nan])
# TimedeltaIndex([NaT, NaT], dtype='timedelta64[ns]', freq=None)

pd.Series([pd.NaT, np.nan])
#0   NaT
#1   NaT
# dtype: timedelta64[ns]

This looks to be caused by following internals:

pd.tslib.is_timestamp_array(np.array([pd.NaT, np.nan]))
# False
pd.lib.is_timedelta_array(np.array([pd.NaT, np.nan]))
# True

Expected Output

datetime64 dtype?

output of pd.show_versions()

on current master

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions