在熊猫数据框中使用geopy计算坐标距离

问题描述

我有下面的代码可用于计算之间的距离 开始乘坐公共交通工具的城市的坐标 以及旅行结束的城市的坐标并返回 值。来自特定城市的组合数量独特 到一个特定的城市,问题是我有一个大数据集 大约120万条记录,并且代码相当慢,因为它 为每个组合进行迭代。我该如何重新排列循环 计算唯一坐标的坐标之间的距离 组合并将其应用于重复的组合?是 有什么方法可以减少处理时间吗?

df_distance = []
for row in clean_df.iterrows():
    try:
        coords_1 = (row[1].Lat_x,row[1].Lng_x)
        coords_2 = (row[1].Lat_y,row[1].Lng_y)
        distance = geodesic(coords_1,coords_2).km
        df_distance.append(distance)
        #print(geodesic(coords_1,coords_2).km)
    except ValueError as e:
        print(row)

解决方法

我重写了循环,从而缩短了数据集的处理时间 坐标距离计算: 我创建了一个空字典,该字典将保存原始目的地旅行的唯一组合的距离计算。对于独特的组合,请创建一个独特的代码,该代码将原始和目的地城市的代码汇总为一个字符串,并将其添加到词典中。如果再次遇到(重复)这样的唯一代码,则将距离添加到字典中,否则计算距离并将其添加到字典中。

from datetime import datetime,timedelta

start_date = datetime(2020,1,0)
end_date = datetime(2020,3,0)

dates_range = []
while start_date < end_date:
    dates_range.append(start_date) # or you can append str(start_date) if want the dates to be as strings
    start_date += timedelta(minutes=1)

print(dates_range)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...