在dataframe python中查找时间戳之间的增量时出错

2024-04-27 04:41:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图提取数据帧中的时间戳数据,并找出时间间隔之间的时间差(以秒为单位)。利用这个时差,我想计算某个物体的速度(速度=距离/时间)。
然而,我在这个时差计算中得到了很多错误,我不能直接考虑Delta值。有人能帮我找出实现中的错误或遗漏吗?
谢谢!你知道吗

import gpxpy
import datetime
import pandas as pd

with 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 = 1
coords['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/timedelta

供参考的GPX文件: https://github.com/stevenvandorpe/testdata/blob/master/gps_coordinates/gpx/my_run_001.gpx

错误1:
这是因为分母是日期时间.timedelta. 你知道吗

 TypeError: unsupported operand type(s) for /: 'int' and 'list'

错误2:
我还尝试将列表元素转换为整数,但它不直接允许对datetime列表元素进行转换

tdelta1 = [int(x) for x in timedelta]
TypeError: int() argument must be a string, a bytes-like object or a number, not 'datetime.timedelta'

Tags: 数据inimportfordatetimetime错误时间
1条回答
网友
1楼 · 发布于 2024-04-27 04:41:22

我建议使用date-time数据类型built into 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

相关问题 更多 >