我正在使用python中的数据框来计算数据框中位置与LATITUDE
和LONGITUDE
列之间的距离。当我运行下面的代码时,没有错误:
lLat= 43.679194
lLon= -79.633352
LCentroid= (lLat, lLon)
# getDistanceBetween gets two centroids and calculate the distance
dfTowers['distance']= HL.getDistanceBetween(LCentroid, dfTowers.index.get_level_values('LATITUDE')[0], dfTowers.index.get_level_values('LONGITUDE')[0]))
但是当我使用下面的那个时,会出现错误
lLat= 43.679194
lLon= -79.633352
LCentroid= (lLat, lLon)
dfTowers['distance']= HL.getDistanceBetween(LCentroid, dfTowers.index.get_level_values('LATITUDE'), dfTowers.index.get_level_values('LONGITUDE')))
,错误是:
TypeError Traceback (most recent call last)
<ipython-input-43-065640ee0e20> in <module>()
5
6 dfTowers['distance']= HL.getDistanceBetween(LCentroid, (dfTowers.index.get_level_values('LATITUDE'),
----> 7 dfTowers.index.get_level_values('LONGITUDE')))
C:\Users\x190523\Documents\python exercice\HomeLocation.pyc in getDistanceBetween(c1, c2)
TypeError: a float is required
答案 0 :(得分:1)
因为get_level_values
会返回&#34;向量&#34;标签。在第一个示例中,您可以访问向量并适当地检索值。在第二个示例中,您传递了整个向量,而getDistanceBetween
并不知道如何处理它。
编辑: 现在要为所有行计算它,我们不需要任何上面的语法
# add the new column, initialized to NaN
dfTowers['distance'] = np.nan
for row_name, row in dfTowers.iterrows():
row['distance'] = HL.getDistanceBetween(LCentroid, row['LATITUDE'], row['LONGITUDE'])