我必須讀一個非常大的(170萬條記錄)csv文件到一個numpy記錄數組。其中兩列是需要轉換爲日期時間對象的字符串。此外,一列需要計算這些日期之間的差異。如何有效地轉換numpy記錄數組中的日期?
目前我做了一個自定義的迭代器類,它構建了一個列表列表。然後我使用np.rec.fromrecords將其轉換爲數組。
但是,我注意到調用datetime.strptime()這麼多次真的會減慢速度。我想知道是否有更有效的方法來完成這些轉換。時間在日期範圍內精確到秒。所以,假設時間是均勻分佈的(他們不是),看起來我正在做更多20倍的必要轉換(170萬/(60 X 60 X 24)。
會更快地存儲在字典{字符串日期:日期時間OBJ}轉換值和第一查了字典,做不必要的轉換之前
或者我應該使用numpy的功能(我還是新來的numpy的庫)
你能告訴我們在csv文件中使用什麼日期格式嗎?我會假設'fromfunction()'可以在這裏幫助,但我需要稍微更多的信息。 – Wolph 2012-07-20 18:51:54
19-JUL-12 02.05.53 PM – 2012-07-20 19:05:51
如果所有這些都在一天之內,應該很容易使轉換變得更簡單。你只需要解析一次日期。在這之後,您只需將這樣的秒數轉換爲:'lambda x:int(x [-11:-9])* 3600 + int(x [-8:-6])* 60 + int(x [-5: - 3])' – Wolph 2012-07-20 19:12:20