我将传感器数据(acclerometer,指南针)保存在csv文件中,其时间戳为hh-mm-ss格式。我想将时间戳转换为秒,以便在特定秒内绘制罗盘读数。 例如: 我想转换
11-26-32 -> 0 sec
11-26-33 -> 1 sec
11-26-34 -> 2 sec
。 。 。 这样我就能用x轴上的秒数和y轴上的罗盘方向绘制读数。
提前致谢
答案 0 :(得分: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]
我认为时间戳的年,月和日都是相同的,因为它们没有提供。
答案 1 :(得分: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>