python - 熊猫应用多列作为输入
问题描述
对于具有 4 列坐标(经度、纬度)的数据框,我想创建第 5 列,其中包含每列两个位置之间的距离,如下所示:
dict = [{'x1': '1','y1': '1','x2': '3','y2': '2'},
{'x1': '1','y1': '1','x2': '3','y2': '2'}]
data = pd.DataFrame(dict)
作为结果,我希望有这个:
dict1 = [{'x1': '1','y1': '1','x2': '3','y2': '2','distance': '2.6'},
{'x1': '1','y1': '1','x2': '3','y2': '2','distance': '2.9'}]
data2 = pd.DataFrame(dict)
使用 from geopy.distance import great_circle 计算距离的地方:
这是我尝试过的:
data['distance']=data[['x1','y1','x2','y2']].apply(lambda x1,y1,x2,y2: great_circle(x1,y1,x2,y2).英里,轴=1)
但这给了我一个类型错误:
TypeError: () 缺少 3 个必需的位置参数:“y1”、“x2”和“y2”
任何帮助表示赞赏。
解决方案
那是因为 lambda 函数只能查看操作数data[['x1','y1','x2','y2']]
,所以你应该修改它如下。希望这可以帮助!
data['distance']=data[['x1','y1','x2','y2']].apply(lambda df: great_circle(df['x1'],df['y1'],df['x2'],df['y2']).miles, axis=1)
推荐阅读
- uwp - UWP 应用程序按钮按住
- c - 警告:传递“fscanf”的参数 1 会从指针目标类型中丢弃“const”限定符
- sql - 如何在 Hana SQL 中查询最近 90 天(从当前日期减去)
- docker - 使用 traefik 路由到烧瓶和 vue 容器
- android - 抽屉导航器中的 BackHandler 导航和 React 导航器中的主堆栈导航器
- chart.js - chartjs中的动态线条样式
- url - 烧瓶 url 处理器
- android - Firebase 实时数据库查询问题
- vue.js - Visual Studio Code 使用双引号格式化代码,尽管 linter 代码样式需要单引号
- azure-application-insights - 使用 ServiceBus 集成的组件的端到端事务视图