我正在查看一些篮球数据,其中我有一些数据框,看起来像(只针对一支球队…小步)
df = pd.DataFrame({'PlayId':[1,1,1,1,1],'Player':['A','B','C','D','E'],'Ball':[0,0,1,0,0],'Pos':[1, 4, 10, 15, 20 ],'Speed':[1,2,3,4,5]})
我创建了一个列,表示与球的距离=1(通用于多个PlayId) :
df['DistanceToBall'] = np.abs(df.Pos-df.Pos[df.groupby('PlayId')['Ball'].transform('idxmax')].reset_index(drop=True))
接下来,我想把它变成一行,其中包含Ball=1的信息
newdf = df.loc[df.Ball==1,:]
现在,我想添加关于Pos和基于DistanceToBall的速度信息的列。我的新列将是closest1,closest2,closest3,closest4,这些列将有它们的位置值,所以按顺序(15,4,1,20)。我不知道该怎么做,尤其是在我有很多不同的“PlayId”的情况下
编辑:预期输出:
PlayId Player Ball Pos Speed DistanceToBall closest1 closest2 closest3 closest4 speed1 speed2 speed3 speed4
2 1 C 1 10 3 0 15 4 1 20 4 2 1 5
这将附加到
newdf
最近的4个玩家的Pos
,按DistanceToBall
排序:相关问题 更多 >
编程相关推荐