微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何解决Python Pandas DataFrame的“Out of bounds nanosecond timestamp”错误?

以下代码抛出“超出界限的纳秒时间戳:1452-04-15 00:00:00
错误.如果我将日期字符串替换为某些最近的日期,例如2017-01-01,则相同的代码可以正常工作.

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

此示例代码用于提供重现错误的简便方法.我真正想要做的是将包含非常早期日期的csv读入数据帧,并将字符串日期转换为np.datetime64 [D]或任何可比较的日期格式.

解决方法:

你需要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

因为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')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐