我有一个由gps设备创建的pandas lat/lng数据帧。在
我的问题是如何生成一个距离列的距离之间的gps轨道线。在
一些google给了我haversine方法,该方法使用使用iloc
选择的单个值,但我在如何迭代方法输入的数据帧上苦苦挣扎。在
我以为我可以运行一个for循环,用一些
for i in len(df):
df['dist'] = haversine(df['lng'].iloc[i],df['lat'].iloc[i],df['lng'].iloc[i+1],df['lat'].iloc[i+1]))
但是我得到了错误TypeError: 'int' object is not iterable
。我也在考虑df.apply
,但我不确定如何获得适当的输入。任何帮助或提示。关于如何做到这一点将不胜感激。在
样品DF
^{pr2}$方法
def haversine(lon1, lat1, lon2, lat2):
"""
Calculate the great circle distance between two points
on the earth (specified in decimal degrees)
"""
# convert decimal degrees to radians
lon1, lat1, lon2, lat2 = map(math.radians, [lon1, lat1, lon2, lat2])
# haversine formula
dlon = lon2 - lon1
dlat = lat2 - lat1
a = math.sin(dlat/2)**2 + math.cos(lat1) * math.cos(lat2) * math.sin(dlon/2)**2
c = 2 * math.asin(math.sqrt(a))
km = 6367 * c
return km
你在找这样的结果吗?在
可能有个聪明的方法熊猫。滚动应用... 但为了快速解决问题,我会这么做。在
^{pr2}$或者,如果您不想这样修改haversine函数,您可以使用东风九号[我,'龙'],东风九号[我,'拉特'],东风九号[i+1,'lon]等
我会建议使用一个更快的变化循环通过一个df这样的has
相关问题 更多 >
编程相关推荐