2014-09-02 52 views
0

我有一列日期。我想計算數組中每個日期時間與指定日期之間的天數。將現有的日期時間數組轉換爲日期

import datetime  
print(mydates[0]) 

2013-04-30T20:00:00.000000000-0400

print(mydates[0] - datetime.date(2013,9,20)) 

TypeError: ufunc subtract cannot use operands with types dtype('<M8[ns]') and dtype('O') 

我需要創建天的日期,但更一般地,我將還需要知道的數字數組如何將日期時間數組轉換爲日期。

我發現另一篇文章將datetime.datetime.now()轉換爲日期,但我不知道該語法如何在現有日期時間集合上使用它。

Here is the link

+0

」我發現另一篇文章將datetime.datetime.now()轉換爲日期,但我不知道在現有日期時間內如何使用該語法。「那麼,請鏈接到其他帖子,向我們展示它使用的語法以及您嘗試應用相同內容的位置,不要只告訴我們它存在。 – abarnert 2014-09-02 19:20:57

+0

http://stackoverflow.com/questions/3743222/how-do-i-convert-datetime-to-date-in-python – Chris 2014-09-02 19:22:03

+0

如果我插入我的變量代替.now()在鏈接的答案中在它上面不起作用 – Chris 2014-09-02 19:23:10

回答

1

無論numpy的類型,你正在使用(大概np.datetime64)和datetime模塊中的類型不隱式轉換。

但他們明確敞篷車,這意味着所有你需要做的是明確的轉換:

>>> mydates[0] - np.datetime64(datetime.date(2013,9,20)) 
numpy.timedelta64(-1,'D') 
>>> mydates - np.datetime64(datetime.date(2013,9,20)) 
array([-1, 0, -152], dtype='timedelta64['D']) 

(注意:'D'有,因爲我使用的是日單位datetime值;從輸出,它看起來像你使用毫微秒爲單位,但同樣普遍適用。)


如果你真的想將數組轉換成數組對象,你可以 ...但這可能是一個壞主意。當你使用本地numpy類型時,你的數組是緊湊和快速的;當你存儲一般的Python類型時,數組並不比普通的Python列表更好,而且它更容易讓人誤解,而不是冒充其他地方。

如果你解釋了你實際要做的事情,有人可能會解釋一個更好的方法來做到這一點,而不是轉換爲date對象的數組。 「

+0

謝謝,這是非常有用和信息。我有一個有8欄股票價格的熊貓數據框,日期時間欄被用作索引。每列都有不同的「事件日期」。我想計算每一列事件日期之間的天數,然後將股票價格數據合併爲「自事件發生後的日子」,以便我可以比較每個公司事件發生前後的價格變化。 – Chris 2014-09-02 19:38:16

+0

@Chris:我不確定你在問什麼。 (請嘗試發佈[MCVE](http:// stackoverflow。com/help/mcve),幾行自包含代碼創建你想要的值,並顯示你希望得到的輸出以及你堅持得到它的地方。)如果你只是想從一個數據中減去一個日期日期時間索引,只需減去。如果要將日期時間索引轉換爲僅限日期的索引(您計算整天而不是部分天數),則可能需要'astype'或其他轉換函數,或者可能只需從現有數據庫中創建新的DataFrame一。 – abarnert 2014-09-02 20:15:04

相關問題