繁体   English   中英

Python Pandas to_datetime pandas.datetime的出纳秒时间戳

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM