2014-01-21 44 views
0

我有一些時間序列數據。它有時間戳和身高數據。我試圖提取時間戳在python可接受的格式,但一直沒有能夠這樣做。我可以輸入數據作爲單獨的值等,但尚未能在%y/%m/%d %h:%m:%s格式。日期時間從多個時間序列中的數據

#yr mo dy hr mn s -  m 
2013 12 01 00 00 00 1 5570.251 
2013 12 01 00 15 00 1 5570.276 
2013 12 01 00 30 00 1 5570.300 
2013 12 01 00 45 00 1 5570.322 
2013 12 01 01 00 00 1 5570.344 
2013 12 01 01 15 00 1 5570.365 
2013 12 01 01 30 00 1 5570.381 
2013 12 01 01 45 00 1 5570.398 
2013 12 01 02 00 00 1 5570.407 

我已經顯示了上面的一個數據樣本。最後兩列是一個常數1和高度。正如你所看到的,它具有空白區域,這使我很難在python中使用datetime模塊。

+0

什麼是「1 5570.251」?毫秒? – Elisha

回答

0

看起來你需要打破數據的長串入行你解析日期前,身高信息。由於所有的數據似乎是相同的長度,該代碼應工作:

data = "2013 12 01 00 00 00 1 5570.251 2013 12 01 00 15 00 1 5570.276 2013 12 01 00 30 00 1 5570.300 2013 12 01 00 45 00 1 5570.322 2013 12 01 01 00 00 1 5570.344 2013 12 01 01 15 00 1 5570.365 2013 12 01 01 30 00 1 5570.381 2013 12 01 01 45 00 1 5570.398 2013 12 01 02 00 00 1 5570.407" 

for i in xrange(0, len(data), 31): 
    row = data[i:i+31] 
    t = row[:19] 
    h = row[20:] 
    d = datetime.strptime(t, "%Y %m %d %H %M %S") 
    print "DATE:", d, " HEIGHT:", h 

如果有些數據最終被不同的長度(例如,如果身高不總是8個字符),那麼你將需要解析原始數據以便在每隔第8個空格後分​​割字符串。以上它更易於閱讀,但假設您的數據是統一的。

0

我不確定你最後的數字是什麼意思,但你可以把格式字符串中的空格處理它們。

>>> import datetime 
>>> data = ... 
>>> [(datetime.datetime.strptime(data[i:i+22],"%Y %m %d %H %M %S 1 "),data[i+22:i+30]) for i in range(len(data))[::31]] 

[(datetime.datetime(2013, 12, 1, 0, 0), '5570.251'), 
(datetime.datetime(2013, 12, 1, 0, 15), '5570.276'), 
    ... 
(datetime.datetime(2013, 12, 1, 2, 0), '5570.407')] 

,會給你一個元組列表,每個元組包含DateTime對象,以及相應的高度

+0

嗨...已經能夠找出單一的數據輸入....掙扎與時間序列...例如,如果我有20間隔的時間戳說15分鐘....#mo mo dy hr mn s - 米 2013 12 01 00 00 00 1 5570.251 2013 12 01 00 15 00 1 5570.276 2013 12 01 00 30 00 1 5570.300 2013 12 01 00 45 00 1 5570.322 2013 12 01 01 00 00 1 5570.344 2013 12 01 01 15 00 1 5570.365 2013 12 01 01 30 00 1 5570.381 2013 12 01 01 45 00 1 5570.398 2013 12 01 02 45 00 1 5570.420 ....也很抱歉,但是我對stackoverflow不熟悉,所以不知道如何發佈正常。 – nikhil003

+0

在問題中解釋得更好 – Elisha

相關問題