用Python计算整个表格中上下两行经纬度距离?

图片说明

如何在表格添加一列距离 表示上下两行经纬度距离?
这是我的代码

import pandas as pd
import numpy as np
gps1=pd.read_csv('top_01.csv',sep=',')
truck1029943=gps1[gps1['user_id']=='1029943']
#按时间升序排列
truck11029943=truck1029943.sort_values(by='time', ascending=True)
#根据经纬度坐标计算直线距离
from math import radians, cos, sin, asin, sqrt
def haversine(lon1, lat1, lon2, lat2): # 经度1,纬度1,经度2,纬度2 (十进制度数)

  lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2]) # 将十进制度数转化为弧度
  dlon = lon2 - lon1
  dlat = lat2 - lat1
  a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
  c = 2 * asin(sqrt(a))
  r = 6371 # 地球平均半径,单位为公里
  return c * r * 1000


#list(map函数)
truck1029943.loc[truck1029943['latitude']>0,'distance']=list(map(haversine,
                                  truck1029943['longitude'],
                                  truck1029943['latitude'],
                                  truck1029943['longitude'].shift(1),
                                  truck1029943['latitude'].shift(1)));truck1029943
#pd.set_option('display.max_columns',1000)
print(truck1029943)
不知道哪里错误了 请指正,想输出的表格直接在最后是有距离的
查看全部
huoguotangzuiya
小双双双�
2019/11/21 23:44
  • python
  • 机器学习
  • 点赞
  • 收藏
  • 回答
    私信

1个回复