我已经为我即将提出的问题工作了一段时间,并试图通过邮件列表和其他在线资源解决它,但最终我的所有努力都没有成功,到目前为止。这就是为什么我要求您宝贵的时间来帮助我完成以下任务:
我正在处理存储为 sqlite 数据库的数据集,该数据库已转换为 csv 文档,以便使用 Python 2.7 更好地处理它。数据以逗号分隔的 csv 格式排列,并报告传感器的命中以及其他信息。它有 8 个不同数据类型的逗号分隔字段,即字符串、整数和浮点数。我只对第二个字段感兴趣,这是记录命中的日期时间以 UNIX 时间戳格式以毫秒为单位存储的位置。不幸的是,传感器的内置时钟无法保持最新状态,我只能通过其他方式恢复给定日期的近似校正时间戳。
以下是数据外观的示例:
sensor_ID,timestamp,z,w,k,j,n,human-readable_datetime
651,956684876150254,-0.1692345,0.623286,0.01442572,0.81455,-0.145732,"2000-01-01 00:01:16"
651,956684936161895,0.00526153,0.999893,0.00998516,0.898215,-0.155301,"2000-01-01 00:02:16"
651,956684996173593,0.00526153,0.999893,0.00988516,0.865215,-0.154301,"2000-01-01 00:03:16"
651,956685056185292,0.00526153,0.999893,0.00978676,0.883215,-0.159301,"2000-01-01 00:04:16"
651,956685116196912,0.00526153,0.999893,0.00922469,0.809862,-0.158607,"2000-01-01 00:05:16"
我想要做的是以下内容:
1) 将第 2 列中的每个时间戳与对应于检索到的近似更正时间戳的值进行比较,该时间戳存储在单独的文件中。这意味着:对于第 2 列中的每个时间戳 'x' --> 将其减去正确的时间戳 'y' --> IF abs(yx) > 60 seconds THEN CONTINUE (to step 2) ELSE QUIT
2) 一旦找到一个匹配项并且减法运算输出一个 > 60 秒的值 --> 将给定的固定值(我将称之为“syncing_value”)添加到文件中的所有时间戳,无论是向后还是向前,然后执行只要它们保持一致,即只要时间戳是过时的,就可以这样做。这是因为某些传感器的时钟会停止同步,但会在软件更新后恢复正常工作。
3) 将文件写入输出并退出
为了简单起见,我将附上我使用的伪代码,至于实际代码,我有很多不同的几乎可以工作的替代方案,我不知道该介绍哪一个。我希望你明白。
这是我的伪代码,它缺少我上面提到的一些基本功能:
import csv
for row in data:
for x in row[1]:
if x <= y:
for i in range(x,len(data)-1):
i = i + syncing_value
else:
exit
我真的希望我想要实现的目标对您来说很清楚,并且非常感谢您的帮助。
谢谢!