我有一个数据框,如下所示。检查员几乎每分钟都在跟踪数据(纬度和经度)。
Inspector_ID Timestamp Latitude Longitude
1 2018-07-24 7:31:00 100.491491 13.725239
1 2018-07-24 7:31:01 101.491491 15.725239
1 2018-07-24 7:32:04 104.491491 14.725239
1 2018-07-24 7:33:06 102.491491 10.725239
2 2018-07-24 8:35:08 105.491491 8.725239
2 2018-07-24 8:36:10 101.491491 15.725239
2 2018-07-24 8:37:09 101.491491 12.725239
2 2018-07-24 8:39:00 106.491491 16.725239
根据以上数据,我想从每个连续的跟踪数据(检查员的纬度和经度)中找出检查员所走过的距离。
预期的输出(示例)
Inspector_ID Timestamp Latitude Longitude Distance
1 2018-07-24 7:31:00 100.491491 13.725239 nan
1 2018-07-24 7:31:01 101.491491 15.725239 2.3
1 2018-07-24 7:32:04 104.491491 14.725239 1.2
1 2018-07-24 7:33:06 102.491491 10.725239 3.6
2 2018-07-24 8:35:08 105.491491 8.725239 nan
2 2018-07-24 8:36:10 101.491491 15.725239 5.6
2 2018-07-24 8:37:09 101.491491 12.725239 2.1
2 2018-07-24 8:39:00 106.491491 16.725239 3
这里,我想根据Inspector_ID计算距离分组。
注意:“距离”列中填充的数字不是正确的距离。
我不知道如何使用纬度和经度计算距离。我也是大熊猫的新手。
使用GroupBy.diff
:
GroupBy.diff
如果要用0代替df['distance']=df.groupby('Inspector_ID')[['Latitude','Longitude']].diff().pow(2).sum(axis=1,min_count=1).pow(1/2)
print(df)
Inspector_ID Timestamp Latitude Longitude distance
0 1 2018-07-24 07:31:00 100.491491 13.725239 NaN
1 1 2018-07-24 07:31:01 101.491491 15.725239 2.236068
2 1 2018-07-24 07:32:04 104.491491 14.725239 3.162278
3 1 2018-07-24 07:33:06 102.491491 10.725239 4.472136
4 2 2018-07-24 08:35:08 105.491491 8.725239 NaN
5 2 2018-07-24 08:36:10 101.491491 15.725239 8.062258
6 2 2018-07-24 08:37:09 101.491491 12.725239 3.000000
7 2 2018-07-24 08:39:00 106.491491 16.725239 6.403124
,请删除NaN