Python 在具有条件的两行之间应用函数

Python 在具有条件的两行之间应用函数,python,pandas,dataframe,Python,Pandas,Dataframe,我想用我的df数据求出速度: df : frame position times 1 (x1,y1) 5 2 (x2,y2) 6 10 (x10,y10) 14 11 (x11,y11) 15 我想添加一列velocity如下公式:仅当两行之间的帧差小于或等于一个值N=1时,才为每行添加velocity=d/t帧和时间都在严格增加 预期结果将是: df_result : frame position time v

我想用我的df数据求出速度:

df :
frame  position   times 
1      (x1,y1)    5
2      (x2,y2)    6
10     (x10,y10)  14 
11     (x11,y11)  15
      
我想添加一列
velocity
如下公式:仅当两行之间的帧差小于或等于一个值
N=1
时,才为每行添加velocity=d/t<代码>帧和时间都在严格增加

预期结果将是:

df_result :
frame  position   time velocity
1      (x1,y1)    5    0
2      (x2,y2)    6    norm((x1,y1),(x2,y2))/(2-1)
10     (x10,y10)  14   NAN
11     (x11,y11)  15   norm((x10,y10),(x11,y11))/(15-14)
有没有一种方法可以在不重复行的情况下实现这一点

编辑:我有使用
shift
方法的想法
df['velocity]=distance.euclidean(df[position],df[position].shift())/df[frame]-df[frame].shift())
df:

 frame  position time 
0   1   (1,2)       5   
1   2   (3,4)       6   
2   3   (7,9)       6   
3   10  (5,6)       14  
4   11  (7,8)       15  
try(仅当您正在获取连续行时有效):


说明:

    frame   position    time    velocity
0   1       (1,2)       5       0.000000
1   2       (3,4)       6       2.828427
2   3       (7,9)       6       inf
3   10      (5,6)       14      0.000000
4   11      (7,8)       15      2.828427
val
:是一个将具有元组的列拆分为如下数据帧的函数:

0 (1,2)
1 (3,4)
进入(数据帧)



g
:是一个函数,它执行
范数((x1,y1),(x2,y2))/(2-1)
事情

我需要这些只是代表性的列。实际可复制输入是什么?还有,你试过了吗?如果在
2(x2,y2)6
下面有
3(x3,y3)9
?框架列正在严格增加。
3(x3,y3)9
对于这个结果将是
标准((x2,y2),(x3,y3))/(3-2)
??基本上,您希望将行(对)聚集在一起,然后应用规格化。我犯了一个错误,速度是通过
次的差来获得的,而不是通过
帧来获得的,条件是两个连续行的帧差小于或等于值N
0 (1,2)
1 (3,4)
0 1
---
1 2
3 4