在上一篇中,我们计算了两点的距离(链接为上篇文章),但是具体业务中,往往会存在一次性计算多组,上百甚至上千的距离。
所以我们需要利用python函数,批量去处理和传参,批量计算距离。前面的操作去第一篇文章看,这里只介绍批量处理部分。
百度地图API单天是有限制的,这个可以在官网查看限制条数,如果是个人项目几千条左右的可以直接跑,更多可能需要购买商用API服务,或者改算大圆直线距离,在第一篇有讲。
第一步:思路整理
首先,我们需要定义一个函数,比如叫做calc_distance,它接受一行数据作为输入,然后从中提取出门店经纬度和订单经纬度,然后调用之前定义的getDistance函数,返回距离值。
然后,你需要用pandas.DataFrame.apply方法来对表格应用这个函数,指定axis=1表示按行操作,得到一个Series对象,它包含了每一行的距离值。
最后,我们需要把这个Series对象赋值给表格的新列,比如叫做distance。
第二步:代码实现
1.1路径设置并读取目标文件
order_path = r"E:\360MoveData\Users\B\Desktop/订单距离测算.xlsx"
df = pd.read_excel(order_path)
1.2定义函数算出距离,并赋值给新列
def calc_distance(row): start = "{}".format(row["用户地址纬经度"]) end = "{}".format(row["门店纬经度"]) return getDistance(start, end) # 注意这里要传入两个参数
distance = df.apply(calc_distance, axis=1) # 注意这里要传入calc_distance函数,而不是getDistance函数
df["distance"]=distance