首页 > 解决方案 > 需要帮助跨列应用函数以创建新列

问题描述

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

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

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: ("'Series' 对象不可调用", '发生在索引 0')"

非常感谢任何和所有帮助!

标签: python

解决方案


您需要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)

推荐阅读