Python 在具有条件的两行之间应用函数
我想用我的df数据求出速度: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 :
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