1、以0列为中心点,计算出1个2公里乘2公里的正方形 2、判断0列中的哪些经纬度落在这个区域内 3、结果另存为新表 已知问题:append特别慢,期待指导 代码如下: from math import radians, cos, sin, asin, sqrt,acos import math import pandas as pd import numpy as np df1 = pd.read_excel('D:/Merge/test.xlsx') df1.insert(8,'minlat','') df1.insert(9,'maxlat','') df1.insert(10,'minlng','') df1.insert(11,'maxlng','') # df1['lat'] = df1['lat'].apply(pd.to_numeric,errors ='coerce') # df1['long'] = df1['long'].apply(pd.to_numeric,errors ='coerce') df1['minlat'] = df1['lat'] - 1/6371.137*180/math.pi df1['maxlat'] = df1['lat'] + 1/6371.137*180/math.pi # df1['minlng'] = df1['long'] - 2*list(map(asin,sin(1/(2*6371.137))/list(map(cos, df1['lat']*math.pi/180))))/180/math.pi # df1['maxlng'] = df1['long'] + 2*list(map(asin,sin(1/(2*6371.137))/list(map(cos, df1['lat']*math.pi/180))))/180/math.pi df1['maxlng']=sin(1/(2*6371.137)) df1['maxlng']=df1['maxlng']/list(map(cos, df1['lat']*math.pi/180)) df1['maxlng']=list(map(asin,df1['maxlng'])) df1['maxlng']=df1['long']+df1['maxlng']*2*180/math.pi df1['minlng']=sin(1/(2*6371.137)) df1['minlng']=df1['minlng']/list(map(cos, df1['lat']*math.pi/180)) df1['minlng']=list(map(asin,df1['minlng'])) df1['minlng']=df1['long']-df1['minlng']*2*180/math.pi b= pd.DataFrame() for i in range(len(df1.index)): #a=df1.loc[(df1['long']> df1.iat[i,10]) & (df1['long']< df1.iat[i,11]) & (df1['lat']> df1.iat[i,8]) & (df1['lat']< df1.iat[i,9])] a = {} a = df1.loc[df1['long']>df1.iat[i,10]] a = a.loc[a['long']<df1.iat[i,11]] a = a.loc[a['lat']>df1.iat[i,8]] a = a.loc[a['lat']<df1.iat[i,9]] a.loc[a['基站名称'].index.tolist(), '基站名称'] = df1.iat[i, 0] b= b.append(a) #b=b.append(pd.DataFrame(a, index=[0]), ignore_index=True) a.drop(['方位角','long','lat','区县','厂家','minlat','maxlat','minlng','maxlng','状态'], axis=1,inplace=True) a.rename(columns={'基站名称':'源小区','小区名称':'目标小区'},inplace=True) a.insert(2,'邻区对','') a['邻区对']= a['源小区']+'_'+a['目标小区'] a.to_csv('D:/Merge/范围.csv', encoding='utf-8',index=False)
02-25
1821

08-11
1091

06-02
4243
