熊猫在csv而不是sql上提高OutOfBoundsDatetime

我有一项服务运行的熊猫版本为0.25.2。该服务从数据库读取数据并将快照存储为csv

df = pd.read_sql_query(sql_cmd,oracle)

查询将导致数据帧中包含一些非常大的datetime值。 (例如3000-01-02 00:00:00) 之后,我使用df.to_csv(index=False)创建一个csv快照并将其写入文件

在安装了熊猫0.25.3的另一台计算机上,我正在将csv文件的内容读取到数据框中,并尝试将date列的数据类型更改为datetime。这导致OutOfBoundsDatetime异常

df = pd.read_csv("xy.csv")
pd.to_datetime(df['val_until'])

pandas._libs.tslibs.np_datetime.OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 3000-01-02 00:00:00

我正在考虑使用pickle创建快照并直接加载数据帧。但是,我很好奇为什么熊猫能够在第一种情况下而不是第二种情况下处理较大的日期时间。 另外,我对如何继续使用csv作为传输格式的任何建议都表示赞赏

bluegame111111 回答:熊猫在csv而不是sql上提高OutOfBoundsDatetime

我相信我明白了。

在第一种情况下,我不确定在sql数据库中存储的实际数据类型是什么,但是如果没有另外指定,则将其读入df可能会导致某种通用类型或字符串类型,其类型很多较高的溢出值。

最终,它最终出现在一个字符串类型的csv文件中。这可能是难以置信的(无限长?)长而没有任何溢出,而您正在尝试使用pandas.to_datetime文档来强制转换为数据类型。根据底部第一个doc链接中显示的Timestamp.max,其最大值为_'2262-04-11 23:47:16.854775807'

本文链接:https://www.f2er.com/3136982.html

大家都在问