我正在使用Python 2 - 我在移动我的代码 - 所以也许这个问题已经消失了。 使用pandas,我可以像这样创建一个日期时间:
import pandas as pd
big_date= pd.datetime(9999,12,31)
print big_date
9999-12-31 00:00:00
big_date2 = pd.to_datetime(big_date)
. . .
Out of bounds nanosecond timestamp: 9999-12-31 00:00:00
我理解错误的原因是,在一个大的日期中显然有太多纳秒。我也知道big_date2 = pd.to_datetime(big_date, errors='ignore')
会起作用。但是,在我的情况下,我有一列应该是日期(从SQL服务器读取),我确实希望它将无效数据/日期更改为NaT。实际上,我使用pd.to_datetime作为有效性检查。一方面,对于熊猫来说,9999-12-31是一个有效的日期,而另一方面,它不是。这意味着我无法使用它并且必须提出其他的东西。
我玩过pandas to_datetime中的参数并且无法解决这个问题。
我已经看过这种性质的其他问题/问题,但没有找到答案。
答案 0 :(得分:0)
我遇到类似的问题,并且能够找到解决方案。
我有一个熊猫数据帧,其中的一列包含一个日期时间(从数据库表中检索,该列是DateTime2数据类型),但是我需要能够表示比{{{ 1}}值。
幸运的是,我不必担心datetime列的时间部分-它实际上始终是00:00:00(我没有创建数据库设计,是的,它可能应该是一个Date数据类型,而不是DateTime2数据类型)。因此,我可以通过将pandas dataframe列转换为仅一个日期类型来解决此问题。例如:
Timestamp.max
将列中的所有值设置为日期9999-12-31,使用此列时不会再出现任何错误。
因此,如果您可以承受丢失尝试使用的日期时间的损失,则可以通过转换为日期来解决数据框中datetime值的限制。