2016-07-07 7 views
0

У меня есть данные датчика (акселерометр, компас), сохраненные в файле csv с их временными метками hh-mm-ss format. Я хотел бы преобразовать временную метку в секундах, чтобы нарисовать показания компаса за определенную секунду. например: Я хочу, чтобы преобразоватьПреобразование временных меток из csv в секунды с использованием python

11-26-32 -> 0 sec 
11-26-33 -> 1 sec 
11-26-34 -> 2 sec 

. . . , так что я могу построить показания с секундами по оси х и ориентациями компаса по оси y.

Заранее спасибо

ответ

0

Преобразование раз datetime объектов и использовать разность datetime объектов от начального времени, чтобы найти количество секунд. total_seconds возвращает количество секунд для timedelta:

from datetime import datetime as dt 

times = ['11-26-32', '11-26-33', '11-26-34'] 
time_format = '%H-%M-%S' 

base_time = dt.strptime(times[0], time_format) 
seconds = [(dt.strptime(t, time_format)- base_time).total_seconds() for t in times] 
print(seconds) 
# [0.0, 1.0, 2.0] 

Я предполагаю, что в годы, месяцы и дни меток времени все равно, так как они не были.

0

Панды решение:

при условии, что у вас есть следующий CSV файл:

Time,val 
11-26-32,11 
11-26-33,31 
11-26-34,33 
11-26-35,10 
11-26-39,7 

Решение:

import pandas as pd 

In [225]: filename = r'C:\Temp\.data\a.csv' 

In [226]: df = pd.read_csv(filename) 

In [227]: df 
Out[227]: 
     Time val 
0 11-26-32 11 
1 11-26-33 31 
2 11-26-34 33 
3 11-26-35 10 
4 11-26-39 7 

In [228]: df.Time = pd.to_datetime(df.Time, format='%H-%M-%S') 

In [229]: df['sec'] = (df.Time - df.ix[0, 'Time']).dt.seconds 

In [230]: df 
Out[230]: 
       Time val sec 
0 1900-01-01 11:26:32 11 0 
1 1900-01-01 11:26:33 31 1 
2 1900-01-01 11:26:34 33 2 
3 1900-01-01 11:26:35 10 3 
4 1900-01-01 11:26:39 7 7 

теперь давайте сюжет его:

In [235]: df.set_index('sec').plot() 
Out[235]: <matplotlib.axes._subplots.AxesSubplot at 0x808e2b0> 

enter image description here