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: ("'Series' 对象不可调用", '发生在索引 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)
推荐阅读
- mongodb - MongoDB中文档引用关系的Mongoose实现
- kendo-ui - 在剑道网格过滤器选项中加载大量数据
- javascript - 当只有一页时想要动态隐藏信息
- ios - 回复按钮导致崩溃
- android - DiffUtil.Callback 未按预期工作
- swift - UIAccessibilityTrait 可调整不输入 increment() 或 decrement() swift
- java - 将 Java 网站部署到 AWS Elastic Beanstalk
- node.js - 即使所有数据都通过 HTTPS 提供,AWS 证书也“不安全”
- java - 通过意图通过 parcelableextra 检索时为空对象
- python - 覆盖 tkinter 中的输入框