天天看点

pandas学习,计算每行中两个经纬度点之间的距离,并添加到每行的末尾

继上一篇,将两个csv文件通过关键字拼接,得到每行包含两个经纬度点的数据,即另一张结果csv表。这里我们将计算每行的经纬度点之间的距离,并添加到末尾。

先来看看我们即将处理的csv表。

pandas学习,计算每行中两个经纬度点之间的距离,并添加到每行的末尾

这里我们还是要先定仪一个计算每行经纬度距离的函数。

import pandas as pd
from haversine import haversine


def cal_distance(row):
    """
    计算两个经纬度点之间的距离
    """
    long1 = row['long1']
    lat1 = row['lat1']
    long2 = row['long2']
    lat2 = row['lat2']
    g1 = (long1, lat1)
    g2 = (long2, lat2)

    ret = haversine(g1, g2) * 1000
    result = "%.7f" % ret

    return result
           

再使用apply()函数来计算每行的结果,并将得到的结果写入末尾。

apply()函数作用于整个DataFrame,自动遍历整个DataFrame,对每个元素运行指定的程序。

axis参数可以为0或者1,0:针对每一列数据运行指定的程序;1:针对每一行数据运行指定的程序

# 读取csv文件
data = pd.read_csv(r"F:\info_1_1.csv", float_precision='round_trip')
# 计算每行两个经纬度点,计算得出的距离
data['distance'] = data.apply(lambda data: cal_distance(data), axis=1)
print(data)
           

我们来看看结果是否如我们预期那样,计算出结果,并写入每行末尾。

pandas学习,计算每行中两个经纬度点之间的距离,并添加到每行的末尾

当然我们也可以将得出的结果写入csv文件中。