Skip to content

ENH? to_datetime: ability to infer unit for numeric values #17860

@cailiang9

Description

@cailiang9

I implement a simple function for reference:

def infer_as_datetime(dtarr):
    for unit in ['ns', 'us', 'ms', 's']: # for 'YYYY-MM-dd hh:mm:ss.msec' unit='ns' will succeed.
        dt = pd.to_datetime(dtarr[-3:], unit=unit) # tail values have higher chance with later time not in 1970
        if (dt.year > 1970).any(): return pd.to_datetime(dtarr, unit=unit)
    return pd.to_datetime(dtarr, unit='D')

print(infer_as_datetime([0,365,366]),infer_as_datetime(['1971-12-30 12:34:01.314','2015-01-30 22',]),infer_as_datetime([1442315569.315]),infer_as_datetime([1442315569000]),infer_as_datetime([1442315569000000]),infer_as_datetime([1442315569000000000]))

Expected Output

Output of infer_as_datetime(dtarr)

DatetimeIndex(['1970-01-01', '1971-01-01', '1971-01-02'], dtype='datetime64[ns]', freq=None) DatetimeIndex(['1971-12-30 12:34:01.314000', '2015-01-30 22:00:00'], dtype='datetime64[ns]', freq=None) DatetimeIndex(['2015-09-15 11:12:49.315000'], dtype='datetime64[ns]', freq=None) DatetimeIndex(['2015-09-15 11:12:49'], dtype='datetime64[ns]', freq=None) DatetimeIndex(['2015-09-15 11:12:49'], dtype='datetime64[ns]', freq=None) DatetimeIndex(['2015-09-15 11:12:49'], dtype='datetime64[ns]', freq=None)

Metadata

Metadata

Assignees

No one assigned

    Labels

    DatetimeDatetime data dtypeEnhancementNeeds DiscussionRequires discussion from core team before further action

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions