我正在处理足球和足球运动员的跟踪数据。 我试图为每一排坐标点找到离球最近的球员,并创建一个新列,将最近的球员归属于球
示例数据
| ball_point | home_player1_point | home_player2_point | away_player1_point |
| -------- | -------------- | ----------------------------------
| (7.00,3.00) (-15.37,8.22) (25.3,-.2) (12.0,12.9)
期望输出
| ball_point | home_player1_point | home_player2_point | away_player1_point | closest
| -------- | -------------- | ----------------------------------
| (7.00,3.00) (-15.37,8.22) (25.3,-.2) (7.1,3.2) away_player1
这里是我工作笔记本的链接:https://github.com/piercepatrick/Articles_EDA/blob/main/nashSCProject.ipynb 与这个问题相关的工作可以在底部找到,尽管它现在很混乱。 我也用这个问题来帮助我:Find closest point in Pandas DataFrames
感谢任何帮助,我需要在今晚之前完成
我假设您的数据帧有更多行。首先,您需要定义一些函数:两点之间的距离函数(我将使用欧几里德距离)和获取两个
pandas.Series
(或数据帧列)中点之间距离的函数:dist
的返回值必须是一个pandas.Series
,因为它必须是一个新列(我假设您的数据帧名为df
):函数
dist
从第二列开始应用,这就是我使用df.iloc[:,1:]
的原因,它们都与“ball_position”列进行比较,这就是为什么它在args
参数中,它必须是tuple
然后可以使用
DataFrame.idxmin
找到距离最小的列。lambda函数仅用于获取"away_player1"
,而不是示例中的"away_player1_point"
打印
distances_df
和df
给出:相关问题 更多 >
编程相关推荐