Apply函数在pandas中包含外部库:如何使其更快?

时间:2019-03-16 11:59:23

标签: pandas numpy pyspark time-complexity vectorization

我有一个数据帧,其中的行数约为900万行,包含纬度和经度,如下所示:

enter image description here

我尝试通过使用以下代码使用OSMnx库获取每个点的最近节点和到最近节点的距离:

measurementsQuery.run();

其中def nearest_node(Lat,Lon): nearest_node,dist=ox.get_nearest_node(G, (Lat,Lon), return_dist=True) return nearest_node def dist_to_Nnode(Lat,Lon): nearest_node,dist=ox.get_nearest_node(G, (Lat,Lon), return_dist=True) return dist df['nearest_node'] = np.vectorize(nearest_node)(df['Lat'],df['Lon']) df['dist_to_Nnode'] = np.vectorize(dist_to_Nnode)(df['Lat'],df['Lon']) 是网络图,并通过以下代码行获得:

G

我将先前的代码应用于import osmnx as ox import networkx as nx import os os.environ["PROJ_LIB"] =r'C:\Users\****\Anaconda3\Library\share' import osmnx as ox Graph_x= ox.graph_from_place('Beijing, China', which_result=2) G= ox.project_graph(Graph_x,to_crs={'proj':'longlat','epsg':'32750' ,'ellps':'WGS84', 'datum':'WGS84'}) #wgs 84 50S 的示例中,该示例已经给出了预期的结果,但是花了很多时间来计算df的总数。 如何更快地运行此代码?

1 个答案:

答案 0 :(得分:1)

对于OSMnx documentation,使用ox.get_nearest_nodes(G, X, Y, method='kdtree'),其中G是您的投影图,而X和Y是您的投影x和y坐标的向量。另外,如果您必须完全在未投影的lat-lng中工作,请使用method='balltree'