Pandas应用多个列作为输入

2024-04-28 02:49:06 发布

您现在位置: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)

其中,距离是使用“从地质Y.distance导入大圆”计算的:

这就是我所尝试的:

数据['distance']=数据['x1','y1','x2','y2']]。应用(λx1,y1,x2,y2:大圆(x1,y1,x2,y2)。英里,轴=1)

但这给了我一个类型错误:

TypeError:()缺少3个必需的位置参数:“y1”、“x2”和“y2”

感谢您的帮助


Tags: 数据距离dataframedata晶格dictdistancepd
1条回答
网友
1楼 · 发布于 2024-04-28 02:49:06

这是因为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)

相关问题 更多 >