使用 python 将时间戳从 csv 转换为秒
Converting timestamps from a csv to seconds using python
我将传感器数据(加速度计、指南针)保存在一个 csv 文件中,其时间戳为 hh-mm-ss 格式。我想将时间戳转换为秒,以绘制特定秒的罗盘读数。
前任:
我要转换
11-26-32 -> 0 sec
11-26-33 -> 1 sec
11-26-34 -> 2 sec
。
.
.
这样我就可以用 x 轴上的秒数和 y 轴上的罗盘方向绘制读数。
提前致谢
将时间转换为 datetime
个对象,并使用 datetime
个对象与初始时间的差值来计算秒数。 total_seconds
returns秒数为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]
我假设时间戳的年、月和日都是相同的,因为没有提供它们。
Pandas解法:
假设您有以下 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>
我将传感器数据(加速度计、指南针)保存在一个 csv 文件中,其时间戳为 hh-mm-ss 格式。我想将时间戳转换为秒,以绘制特定秒的罗盘读数。 前任: 我要转换
11-26-32 -> 0 sec
11-26-33 -> 1 sec
11-26-34 -> 2 sec
。 . . 这样我就可以用 x 轴上的秒数和 y 轴上的罗盘方向绘制读数。
提前致谢
将时间转换为 datetime
个对象,并使用 datetime
个对象与初始时间的差值来计算秒数。 total_seconds
returns秒数为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]
我假设时间戳的年、月和日都是相同的,因为没有提供它们。
Pandas解法:
假设您有以下 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>