我有一个具有这种结构的数据框:
import pandas as pd
from geopy.distance import vincenty
data = {'id': [1, 2, 3, 1, 2 , 3],
'coord': [[10.1, 30.3], [10.5, 32.3], [11.1, 31.3],
[10.1, 30.3], [10.5, 32.3], [61, 29.1]],
}
df = pd.DataFrame(data)
这是它的外观:
coord id
0 [10.1, 30.3] 1
1 [10.5, 32.3] 2
2 [11.1, 31.3] 3
3 [10.1, 30.3] 1
4 [10.5, 32.3] 2
5 [61, 29.1] 3
现在,我想按id
. 然后,我想使用coords
. 这些应该在函数中用于计算两个坐标之间的距离:
这是我尝试过的:
df.groupby('id')['coord'].apply(lambda x: vincenty(x, x.shift(1)))
vincenty(x,y)
期望x
像 (10, 20) 一样,y
并且返回一个浮点数。
显然,这是行不通的。该函数接收两个 Series 对象而不是两个列表。所以可能使用x.values.tolist()
应该是下一步。但是,我对事物的理解到此为止。因此,我将不胜感激有关如何解决此问题的任何想法!