2016-07-07 33 views
2

我有一個包含日期和時間列的熊貓數據框等等,我試圖將這兩列轉換爲微秒精度的Unix時間戳,這樣我就可以將數據框轉儲到一個numpy的內存映射文件中(這需要浮點數,或者至少不需要日期對象,所以它是必不可少的)。時間戳轉換無法產生期望的結果

因此,沒有數據幀,僅使用字符串,我得到如下:

DT = '2014-10-01 00:00:07.082000' 

UX= time.mktime(datetime.datetime.strptime(DT, '%Y-%m-%d %H:%M:%S.%f').timetuple()) 
print UX 
>>> 1412118007.0 

tm = datetime.datetime.fromtimestamp(UX) 
print tm 
>>>2014-10-01 00:00:07 

那麼,如何包括與時間戳微秒?

回答

2

可以轉換爲np.int64用於UNIX時間ns精度:

df = pd.DataFrame({'A':['2014-10-01 00:00:07.082000', '2014-10-01 00:00:07.082000']}) 
print (df) 
          A 
0 2014-10-01 00:00:07.082000 
1 2014-10-01 00:00:07.082000 

df['A'] = pd.to_datetime(df.A) 

df['B'] = df.A.astype(np.int64) 
df['C'] = pd.to_datetime(df.B, unit='ns') 
print (df) 
         A     B      C 
0 2014-10-01 00:00:07.082 1412121607082000000 2014-10-01 00:00:07.082 
1 2014-10-01 00:00:07.082 1412121607082000000 2014-10-01 00:00:07.082 

對於ms精度使用:

df['B'] = (df.A.astype(np.int64) // 10**6) 
df['C'] = pd.to_datetime(df.B, unit='ms') 
print (df) 
         A    B      C 
0 2014-10-01 00:00:07.082 1412121607082 2014-10-01 00:00:07.082 
1 2014-10-01 00:00:07.082 1412121607082 2014-10-01 00:00:07.082 
+0

非常好,解決了它。 – ajsp

-1

這樣做=)

from datetime import datetime 


DT = '2014-10-01 00:00:07.082000' 

UX = datetime.strptime(DT, '%Y-%m-%d %H:%M:%S.%f') 

print UX 
>>> 2014-10-01 00:00:07.082000 
+0

這不是時間戳雖然,這是一個日期時間對象,它不能被存儲和讀取.npy文件。 – ajsp