我正在嘗試提取數(shù)據(jù)框中存在的時(shí)間戳數(shù)據(jù),并找到時(shí)間間隔之間的時(shí)間差(以秒為單位)。使用這個(gè)時(shí)間差,我想計(jì)算某個(gè)物體的速度(速度 = 距離/時(shí)間)。但是,我在這個(gè)時(shí)間差計(jì)算中遇到了很多錯(cuò)誤,我無(wú)法直接考慮 Delta 值。有人可以幫我弄清楚我的實(shí)施中有什么問(wèn)題或遺漏嗎?謝謝!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:這是因?yàn)榉帜甘?datetime.timedelta 類(lèi)型。 TypeError: unsupported operand type(s) for /: 'int' and 'list'Error2:我也嘗試將列表元素轉(zhuǎn)換為整數(shù),但它不允許直接轉(zhuǎn)換日期時(shí)間列表元素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貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊
我建議使用內(nèi)置于 numpy并受 Pandas 支持的日期時(shí)間數(shù)據(jù)類(lèi)型,例如:
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')
從您的文件中讀取值,然后您可以通過(guò)以下方式輕松區(qū)分并轉(zhuǎn)換為第二個(gè)間隔:
import numpy as np
dt = np.diff(times.values) / np.timedelta64(1, 's')
speed = 1 / dt
添加回答
舉報(bào)
0/150
提交
取消