簡體   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