【发布时间】:2020-03-16 05:32:54
【问题描述】:
我想用 Python 写一个程序来解决这个问题。我有两个 excel 文件:
- File1 包含各种测试的客户 ID 和坐标(经度、纬度) 分。
- File2 包含所有站点及其坐标(经度、纬度)。
我想创建一个新的列优先文件,该文件显示每个客户 ID 的最近站点。客户站点 ID 定义为:与第二个文件中所有站点的最小距离。
我已将 python 中的两个 excel 文件作为单独的 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 的新列中(“最小距离”和“站点 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()]
我不断收到以下错误:
ValueError:索引必须单调递增或递减
KeyError:'Min_Distance'
纠正错误和改进代码的任何建议。
【问题讨论】:
-
请提供完整的错误信息,以及minimal reproducible example。变量名和函数名应该遵循
lower_case_with_underscores风格,事实上你没有遵循风格约定会让事情变得更难阅读。