计算python

时间:2016-09-25 14:24:41

标签: python function pandas dataframe

我正在使用python中的数据框来计算数据框中位置与LATITUDELONGITUDE列之间的距离。当我运行下面的代码时,没有错误:

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

1 个答案:

答案 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'])