需要帮助在整个列上应用函数以创建新列

时间:2019-07-17 16:05:14

标签: python

我正在尝试应用一个函数,该函数计算点与数据框列中每一行之间的距离。

我将特定点的纬度和经度保存为元组

New_Haven_DMA = (41.310809, 72.924953)

我有一个数据框,其中包含一系列我想用来测量距离的点的经度和纬度。我尝试定义一个函数来计算点与New_Haven_DMA之间的距离,但无法将其应用于整个数据帧。

作为参考,我在数据框中的Lat_Long列如下所示:

(33.4484, -112.074)
(35.1495, -90.04899999999999)
(35.1495, -90.04899999999999)
(35.2962, -89.6615)
(35.2962, -89.6615)

这是我到目前为止所拥有的;

New_Haven_DMA = (41.310809, 72.924953)
def Dist_New_Haven(row):
    coord_1 = row(df_Lat_Long['Lat_Long'])
    return distance.distance(coord_1, (41.310809, 72.924953)).miles

df_Lat_Long['New_Haven'] = df_Lat_Long.apply(Dist_New_Haven, axis = 1)

我希望创建一个名为“ New_Haven”的新列,该列中的每个值都是从“ Lat_Long”到纽黑文的距离。

我收到以下错误:

  

“ TypeError :(“'系列'对象不可调用”,'发生在索引0')”

任何帮助都将不胜感激!

1 个答案:

答案 0 :(得分:0)

您需要在特定列上使用apply

尝试一下:

def Dist_New_Haven(row):
    return distance.distance(row, (41.310809, 72.924953)).miles

df_Lat_Long['New_Haven'] = df_Lat_Long['Lat_Long'].apply(Dist_New_Haven)