Python 将函数应用于数据帧中的每一行而不使用apply

Python 将函数应用于数据帧中的每一行而不使用apply,python,pandas,Python,Pandas,我在寻找两个纬度和经度之间距离的最快方法。一对来自用户,另一对来自marker。下面是我的代码: import geopy import pandas as pd marker = pd.read_csv(file_path) coords_2 = (4.620881605,101.119911) marker['Distance'] = round(geopy.distance.geodesic((marker['Latitude'].values,marker['Longitude'].

我在寻找两个纬度和经度之间距离的最快方法。一对来自用户,另一对来自
marker
。下面是我的代码:

import geopy
import pandas as pd


marker = pd.read_csv(file_path)
coords_2 = (4.620881605,101.119911)
marker['Distance'] = round(geopy.distance.geodesic((marker['Latitude'].values,marker['Longitude'].values), (coords_2)).m,2)
以前,我使用了
apply
,速度非常慢:

marker['Distance2'] = marker.apply(lambda x: round(geopy.distance.geodesic((x.Latitude,x.Longitude), (coords_2)).m,2), axis = 1)
然后,我使用熊猫系列矢量化:

marker['Distance'] = round(geopy.distance.geodesic((marker['Latitude'].values,marker['Longitude'].values), (coords_2)).m,2)
我收到错误信息:

ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()

我在测试中添加了
all()
any()
(例如
marker['Latitude'].values.all()、marker['Longitude'].values.all()
,反之亦然)。但是,无论是
any()
还是
all()
计算的结果都是完全错误的

这是我的结果:

    Latitude    Longitude   Distance    Distance2
0   4.620882    101.119911  11132307.42 0.00
1   4.620125    101.120399  11132307.42 99.72
2   4.619368    101.120885  11132307.42 199.26
其中
Distance
是不正确的矢量化结果,而
Distance 2
是使用正确的
apply
结果。简单地说,
distance 2
是我的预期结果


如果不使用
应用
,我希望以正确的输出生成更快的结果。

尝试使用“应用”功能更快或更灵活。我在搜索geopy+numpy时发现了另一个问题。即使它现在已经很旧了,我仍然认为它是相关的,特别是
geopandas
部分。如果这还不足以解决您的问题,请在评论中Ping我,如果您希望我重新开始这个问题,请告诉我原因。您也可以分享另一个问题吗?我现在正在查看@SergeBallestaIt似乎不可能安装geopandas@谢尔盖:你的建议不起作用。很抱歉