How to work around Python Pandas DataFrame's “Out of bounds nanosecond timestamp” error?

送分小仙女□ 提交于 2020-06-14 07:40:23

问题


The following code throws an "Out of bounds nanosecond timestamp: 1452-04-15 00:00:00 " error. The same code works if I replace the date strings to some recent dates such as 2017-01-01.

df=pd.DataFrame({'Date':np.arange('1452-04-15', '1519-05-02', dtype='datetime64[D]')})

This example code is for providing an easy way to reproduce the error. What I am really trying to get done is to read a csv containing very early dates like these into a dataframe, and to convert the string dates into np.datetime64[D] or any comparable date format.


回答1:


You need period_range:

r = pd.period_range('1452-04-15', '1519-05-02')
print (r)
PeriodIndex(['1452-04-15', '1452-04-16', '1452-04-17', '1452-04-18',
             '1452-04-19', '1452-04-20', '1452-04-21', '1452-04-22',
             '1452-04-23', '1452-04-24',
             ...
             '1519-04-23', '1519-04-24', '1519-04-25', '1519-04-26',
             '1519-04-27', '1519-04-28', '1519-04-29', '1519-04-30',
             '1519-05-01', '1519-05-02'],
            dtype='period[D]', length=24488, freq='D')

df = pd.DataFrame({'Date' : r})
print (df.head())
        Date
0 1452-04-15
1 1452-04-16
2 1452-04-17
3 1452-04-18
4 1452-04-19

because timestamp limitations:

In [66]: pd.Timestamp.min
Out[66]: Timestamp('1677-09-21 00:12:43.145225')

In [67]: pd.Timestamp.max
Out[67]: Timestamp('2262-04-11 23:47:16.854775807')


来源:https://stackoverflow.com/questions/50265288/how-to-work-around-python-pandas-dataframes-out-of-bounds-nanosecond-timestamp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!