Я хочу написать программу на Python, чтобы решить эту проблему. У меня есть два файла Excel:
- Файл1 с идентификаторами клиентов и координатами (Long, Lat) различных контрольных точек.
- Файл2, содержащий все сайты и их координаты (Long, Lat).
Я хочу создать новый файл первого столбца, который показывает ближайший сайт для каждого идентификатора клиента. Идентификатор сайта клиента определяется как: Минимальное расстояние от всех сайтов во 2-м файле.
Я импортировал оба файла Excel в pythons как отдельные Dataframes File1 и File2. До сих пор я был в состоянии определить функцию для расчета расстояния. Это работает нормально.
def Distance(LatA,LongA,LatB,LongB):
Distance = 6371 * np.arccos(np.cos(np.deg2rad(90 - LatA))
* np.cos(np.deg2rad(90 - LatB))
+ np.sin(np.deg2rad(90 - LatA))
* np.sin(np.deg2rad(90 - LatB))
* np.cos(np.deg2rad(LongA - LongB))
)
return Distance
Ниже код, который я написал для итеративного расчета расстояния и сохранения его в новых столбцах в File1 ('Min Distance' и 'Site ID').
File1['Min Distance']=1 # Define blank Column in File1
File1['Site_ID']=1 # Define blank Column in File1
L12={'MinDist':[1],'SiteID':[1]} # Define blank field
Dist_df=pd.DataFrame(L12) # convert to DataFrame
for ind1,rw1 in File1.iterrows():
for ind2,rw2 in File2.iterrows():
DistA=0
DistA=Distance(File1.Lat[ind1],File1.Long[ind1],File2.Lat[ind2],File2.Long[ind2])
Dist_df.loc[ind2]=[DistA,File2.loc[ind2,'SiteID']]
File1.loc[ind1,'Min_Distance':'Site_ID']= Dist_df[Dist_df['MinDist']==Dist_df['MinDist'].min()]
Я продолжаю получать следующие ошибки:
Любые предложения по исправлению ошибок и улучшению кода.