【问题标题】:calculate acceleration given speed计算加速度给定速度
【发布时间】:2018-04-20 19:10:25
【问题描述】:

对不起,如果这看起来是一个愚蠢的问题, 我有一个看起来像这样的数据集

type    time    latitude    longitude   altitude (m)    speed (km/h)    name    desc    currentdistance timeelapsed
T   2017-10-07 10:44:48 28.750766667    77.088805000    783.5   0.0 2017-10-07_10-44-48     0.0 00:00:00
T   2017-10-07 10:44:58 28.752345000    77.087840000    853.5   7.8         198.70532   00:00:10
T   2017-10-07 10:45:00 28.752501667    77.087705000    854.5   7.7         220.53915   00:00:12

我不确定如何解决这个问题,计算加速度需要考虑速度和时间的差异,有什么建议可以尝试吗?

提前致谢

【问题讨论】:

  • 你想要加速formola?
  • 我已经在问题中发布了论坛,问题是当我尝试获取时间差时,我得到的时间差不能被解释为整数,所以我有点在寻找我可以尝试的方法
  • 您应该将数据转换为标准数据时间格式。 (因为你的数据是human_readble 格式)
  • 加速 = (vEnd - vStart) / 时间。您的第一个计算时间为 58 - 48 = 10 秒,vEnd = 853.5 vStart = 783,5
  • 将时间转换为秒

标签: python pandas datetime data-science physics


【解决方案1】:

假设您的数据是从 CSV 加载的,如下所示:

type,time,latitude,longitude,altitude (m),speed (km/h),name,desc,currentdistance,timeelapsed
T,2017-10-07 10:44:48,28.750766667,77.088805000,783.5,0.0,2017-10-07_10-44-48,,0.0,00:00:00
T,2017-10-07 10:44:58,28.752345000,77.087840000,853.5,7.8,,,198.70532,00:00:10
T,2017-10-07 10:45:00,28.752501667,77.087705000,854.5,7.7,,,220.53915,00:00:12

time 列转换为datetime 对象,timeelapsed 列转换为秒。从这里你可以添加一个acceleration 列 计算每行之间speed (km/h) 的差异并除以每行之间time 的差异,如下所示:

from datetime import datetime    
import pandas as pd
import numpy as np

df = pd.read_csv('input.csv', parse_dates=['time'], dtype={'name':str, 'desc':str})
df['timeelapsed'] = (pd.to_datetime(df['timeelapsed'], format='%H:%M:%S') - datetime(1900, 1, 1)).dt.total_seconds()
df['acceleration'] = (df['speed (km/h)'] - df['speed (km/h)'].shift(1)) / (df['timeelapsed'] - df['timeelapsed'].shift(1))

print df

给你:

  type                time   latitude  longitude  altitude (m)  speed (km/h)                 name desc  currentdistance  timeelapsed  acceleration
0    T 2017-10-07 10:44:48  28.750767  77.088805         783.5           0.0  2017-10-07_10-44-48  NaN          0.00000          0.0           NaN
1    T 2017-10-07 10:44:58  28.752345  77.087840         853.5           7.8                  NaN  NaN        198.70532         10.0          0.78
2    T 2017-10-07 10:45:00  28.752502  77.087705         854.5           7.7                  NaN  NaN        220.53915         12.0         -0.05

【讨论】:

  • 非常感谢。
  • @Ryan 我明白你的所作所为,我有点困惑,因为在这里你将加速度输出为一个标量,而它是一个向量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-21
相关资源
最近更新 更多