Тема: Обрежно, баги(чи описані баги - це - фічі ?) ) (pandas і час )
python 3.5, pandas '0.22.0'
поотрібно перетворити в datetime object текстове представлення дати
>>pd.to_datetime(pd.Series(['2018-02-22']), format='%Y-%m-%d')
0 2018-02-22
dtype: datetime64[ns]
все чудово, але
>> pd.to_datetime(pd.Series(['3018-02-22']), format='%Y-%m-%d')
TypeErrorTraceback (most recent call last)
/usr/local/lib/python3.5/dist-packages/pandas/core/tools/datetimes.py in _convert_listlike(arg, box, format, name, tz)
... skipped ...
ValueError: time data '3018-02-22' doesn't match format specified
ще цікавіше і можна цілком нарватися на проблему, бо навіть не кине ексепшн:
>>pd.Series(['2018-02-22']).astype('datetime64[ns]')
0 2018-02-22
dtype: datetime64[ns]
але, увага:
>>pd.Series(['3018-02-22']).astype('datetime64[ns]')
0 1849-01-13 00:50:52.580896768
dtype: datetime64[ns]
Звісно, якщо покопатися в документації, то знайдеться
:
Timestamp limitations
Since pandas represents timestamps in nanosecond resolution, the time span that can be represented using a 64-bit integer is limited to approximately 584 years:In [92]: pd.Timestamp.min
Out[92]: Timestamp('1677-09-21 00:12:43.145225')In [93]: pd.Timestamp.max
Out[93]: Timestamp('2262-04-11 23:47:16.854775807')
Але, можна перетворити 3018 в 1849 і навіть не помітити (