孔橙 2018-11-26 06:37 采纳率: 0%
浏览 1218
已采纳

pandas语法问题,数据类型转换问题

我想完成下图中的逐行之间根据坐标点计算距离

下面是编写的计算函数

 from math import sin, asin, cos, radians, fabs, sqrt
EARTH_RADIUS=6371           # 地球平均半径,6371km

def hav(theta):
    s = sin(theta / 2)
    return s * s

def get_distance_hav(row0, row1):
    "用haversine公式计算球面两点间的距离。"
    # 经纬度转换成弧度
    lat0 = row0['latitude']
    lng0 = row0['longitude']
    lat1 = row1['latitude']
    lng1 = row1['longitude']
    lat0 = radians(lat0)
    lat1 = radians(lat1)
    lng0 = radians(lng0)
    lng1 = radians(lng1)

    dlng = fabs(lng0 - lng1)
    dlat = fabs(lat0 - lat1)
    h = hav(dlat) + cos(lat0) * cos(lat1) * hav(dlng)
    distance = 2 * EARTH_RADIUS * asin(sqrt(h))

    return distance

运行

 df_test['distance_interval'] = get_distance_hav(df_test, df_test.shift(1))

报错cannot convert the series to 数据类型转换问题
请教大佬想完成这个计语法该怎么写

  • 写回答

1条回答 默认 最新

  • dotaqyp 2018-11-26 13:27
    关注

    data1 = df_test
    data1.rename(columns={'latitude':'lat1', 'longitude':'long1'}, inplace = True)
    data2 = df_test.shift(1)
    data2.rename(columns={'latitude':'lat2', 'longitude':'long2'}, inplace = True)
    data = data1.join(data2)
    data = data.dropna()

    def get_distance_hav(row):
    "用haversine公式计算球面两点间的距离。"
    # 经纬度转换成弧度
    lat0 = row0['lat1']
    lng0 = row0['long1']
    lat1 = row1['lat2']
    lng1 = row1['long2']
    lat0 = radians(lat0)
    lat1 = radians(lat1)
    lng0 = radians(lng0)
    lng1 = radians(lng1)

    dlng = fabs(lng0 - lng1)
    dlat = fabs(lat0 - lat1)
    h = hav(dlat) + cos(lat0) * cos(lat1) * hav(dlng)
    distance = 2 * EARTH_RADIUS * asin(sqrt(h))
    
    return distance
    

    df_test['distance_interval'] = data.apply(get_distance_hav, axis =1)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计