计算按行分组的时间和距离?

时间:2019-11-15 07:31:02

标签: python python-3.x pandas pandas-groupby data-science

我目前正在尝试将一个函数或某些东西组合在一起,以一种或一种方法或两种不同的方法或函数来计算总时间和距离,这些函数或函数根据几列来计算行进和花费的时间和/或时间。

例如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))
) 

但是我不确定如何在两列(经度)以及实际时间上以及基于无法在代码列中终止或完成以计算值的条件来做到这一点。

感谢任何正在寻找的人

0 个答案:

没有答案