在python中优化n值的嵌套循环(“ for”)

时间:2018-09-24 17:58:50

标签: python

我需要以5公里的比例识别所有点,并检查所有可能的泛滥。事实是,我有很多可能的积分(2,000),而我所做的就是对每个积分进行一次循环检查,我的意思是2,000X2,000次。

我想知道是否有一个优化此代码的过程,因为这需要花费很多时间。

感谢您的帮助。

import pandas as pd
from geopy import distance
from geopy import Point

df_geoloc_eess= pd.read_excel("eess_zonacentro.xlsx")

dist_km=[]
ar_eess_cand=[]
ar_eess_comp=[]
ar_lats_cand=[]
ar_lons_cand=[]
ar_lats_comp=[]
ar_lons_comp=[]

distancia=[]
for i in range(len(df_geoloc_eess.index)):

    lats_cand=df_geoloc_eess['latitud'][i]
    lons_cand=df_geoloc_eess['longitud'][i]
    eess_cand=df_geoloc_eess["num_pemex"][i]

    for j in range(len(df_geoloc_eess.index)):

        lats_comp=df_geoloc_eess['latitud'][j]
        lons_comp=df_geoloc_eess['longitud'][j]
        eess_comp=df_geoloc_eess["num_pemex"][j]

        point_cand=Point(lats_cand,lons_cand)
        point_comp=Point(lats_comp,lons_cand)

        dist_km=distance.distance(point_cand,point_comp).km

        if dist_km<5:

            distancia.append(dist_km)

            ar_eess_cand.append(eess_cand)
            ar_lats_cand.append(lats_cand)
            ar_lons_cand.append(lons_cand)

            ar_eess_comp.append(eess_comp)
            ar_lats_comp.append(lats_comp)
            ar_lons_comp.append(lons_comp)

            dta={'candidata':ar_eess_cand,'competencias':ar_eess_comp,'latitud':ar_lats_comp,'longitud':ar_lons_comp,'distancia':distancia}
            matiz_dist=pd.DataFrame(dta)

0 个答案:

没有答案