欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-01-24 15:32:34
...

继上一篇,将两个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文件中。

data.to_csv(r"F:\info_1_2.csv", index=False)