使用python将时间戳从csv转换为秒

时间:2016-07-07 15:28:22

标签: python csv pandas matplotlib data-analysis

我将传感器数据(acclerometer,指南针)保存在csv文件中,其时间戳为hh-mm-ss格式。我想将时间戳转换为秒,以便在特定秒内绘制罗盘读数。 例如: 我想转换

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

。 。 。 这样我就能用x轴上的秒数和y轴上的罗盘方向绘制读数。

提前致谢

2 个答案:

答案 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>

enter image description here