为了账号安全,请及时绑定邮箱和手机立即绑定

在数据帧python中查找时间戳之间的增量时出错

在数据帧python中查找时间戳之间的增量时出错

GCT1015 2022-05-19 15:33:35
我正在尝试提取数据框中存在的时间戳数据,并找到时间间隔之间的时间差(以秒为单位)。使用这个时间差,我想计算某个物体的速度(速度 = 距离/时间)。但是,我在这个时间差计算中遇到了很多错误,我无法直接考虑 Delta 值。有人可以帮我弄清楚我的实施中有什么问题或遗漏吗?谢谢!import gpxpyimport datetimeimport pandas as pdwith open('test3.gpx') as fh:    gpx_file = gpxpy.parse(fh)    segment = gpx_file.tracks[0].segments[0]    coords = pd.DataFrame([    { 'time': p.time} for p in segment.points])dist1 = 1coords['timestamp'] = [datetime.datetime.time(d) for d in coords['time']]timedelta = [datetime.datetime.combine(datetime.date.today(), coords.timestamp[i + 1]) - datetime.datetime.combine(datetime.date.today(), coords.timestamp[i]) for i in range(len(coords.time)-1)]speed = dist1/timedeltaGPX 文件供参考: https ://github.com/stevenvandorpe/testdata/blob/master/gps_coordinates/gpx/my_run_001.gpxError1:这是因为分母是 datetime.timedelta 类型。 TypeError: unsupported operand type(s) for /: 'int' and 'list'Error2:我也尝试将列表元素转换为整数,但它不允许直接转换日期时间列表元素tdelta1 = [int(x) for x in timedelta]TypeError: int() argument must be a string, a bytes-like object or a number, not 'datetime.timedelta'
查看完整描述

1 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

我建议使用内置于 numpy并受 Pandas 支持的日期时间数据类型,例如:


import gpxpy

import pandas as pd


with open('my_run_001.gpx') as fd:

    gpx_file = gpxpy.parse(fd)

    segment = gpx_file.tracks[0].segments[0]


    times = pd.Series([p.time for p in segment.points], name='time')

从您的文件中读取值,然后您可以通过以下方式轻松区分并转换为第二个间隔:


import numpy as np


dt = np.diff(times.values) / np.timedelta64(1, 's')

speed = 1 / dt


查看完整回答
反对 回复 2022-05-19
  • 1 回答
  • 0 关注
  • 134 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信