[英]Python Pandas to_datetime Out of bounds nanosecond timestamp on a pandas.datetime
我正在使用Python 2--我落后于我的代码-也许这个问题已经消失了。 使用熊猫,我可以像这样创建日期时间:
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 Server读取)的日期,我确实希望它将无效的数据/日期更改为NaT。 实际上,我使用pd.to_datetime作为有效性检查。 对于熊猫来说,一方面,9999-12-31是有效日期,另一方面,不是有效日期。 这意味着我无法使用它,而不得不提出其他建议。
我在to_datetime的pandas中争论过,但无法解决。
我已经查看了这种性质的其他问题/问题,但没有找到答案。
我有一个类似的问题,并且能够找到解决方案。
我有一个熊猫数据框,其中的一列包含一个日期时间(从数据库表中检索出来,该列是DateTime2数据类型),但我需要能够表示比Timestamp.max
值更远的日期。
幸运的是,我不必担心datetime列的时间部分-实际上总是00:00:00(我没有创建数据库设计,是的,它可能应该是Date数据类型,不是DateTime2数据类型)。 因此,我可以通过将pandas dataframe列转换为仅一个日期类型来解决此问题。 例如:
for i, row in df.iterrows():
df.set_value(i, 'DateColumn', datetime.datetime(9999, 12, 31).date())
将该列中的所有值设置为日期9999-12-31,并且在使用此列时不会再出现任何错误。
因此,如果您可以承受丢失尝试使用日期的时间部分的负担,则可以通过转换为日期来解决数据框中datetime值的限制。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.