我目前正在尝试将一个函数或某些东西组合在一起,以一种或一种方法或两种不同的方法或函数来计算总时间和距离,这些函数或函数根据几列来计算行进和花费的时间和/或时间。
例如df如下:
ID | Time_Start | Time_End | Lat | Lon | Actual_Time | Code
B2 2019-11-01 12:09:08.529 2019-11-01 20:31:13.756 37.8 -122.261980 2019-11-01 19:19:12.404 Pending
B2 2019-11-01 12:09:08.529 2019-11-01 20:31:13.756 34.3 -123.424212 2019-11-01 19:21:12.298 Pending
B2 2019-11-01 12:09:08.529 2019-11-01 20:31:13.756 34.3 -123.424212 2019-11-01 19:24:12.298 Current
B2 2019-11-01 12:09:08.529 2019-11-01 20:31:13.756 32.3 -121.424212 2019-11-01 19:27:12.298 Completed
B2 2019-11-01 12:09:08.529 2019-11-01 20:31:13.756 37.3 -121.424212 2019-11-01 19:31:12.298 Terminated
B2 2019-11-01 12:09:08.529 2019-11-01 20:31:13.756 36.3 -124.424212 2019-11-01 19:35:12.298 Pending
B2 2019-11-01 12:09:08.529 2019-11-01 20:31:13.756 37.3 -124.724212 2019-11-01 19:38:12.298 Current
B2 2019-11-01 12:09:08.529 2019-11-01 20:31:13.756 37.3 -124.824212 2019-11-01 19:38:12.298 Current
B2 2019-11-01 12:09:08.529 2019-11-01 20:31:13.756 37.5 -121.424212 2019-11-01 19:31:12.298 Terminated
我要做的是根据 ID,Time_Start,Time_End, 是否相同,按行计算,我想计算纬度和经度坐标以及Actual_Time的差异,仅当“代码列”的值不是“已完成或终止”时,或者本质上是在计算列中的任一行在“代码”列中具有“已完成”或“终止”的值时,才能不计算并开始计算未完成或未终止的下一行。
因此,基本上每行都会有一个新的列或一个坐标之间的距离值,以及real_time中的时差的分钟或秒值,除非Code值已完成或终止。
我以前使用过类似下面的内容,
def diff_first_last(x):
return x.loc.iloc[-1]['column 1'] - x.loc.iloc[0]['column 1']
(df.sort_values('time_value').groupby('id')
.apply(lambda x: diff_first_last(x))
)
但是我不确定如何在两列(经度)以及实际时间上以及基于无法在代码列中终止或完成以计算值的条件来做到这一点。
感谢任何正在寻找的人