我有一个用于位置跟踪的数据帧,类似于:
df = pd.DataFrame({
'id': [1,1,1,2,2],
'lat': [41.144540, 41.144540, 41.163172, 41.163233, 41.163198],
'lon': [-8.562926, -8.562926, -8.583821, -8.583838, -8.583886 ]
})
df
id lat lon
0 1 41.144540 -8.562926
1 1 41.144540 -8.562926
2 1 41.163172 -8.583821
3 2 41.163233 -8.583838
4 2 41.163198 -8.583886
因此,我想为每次行程的长度(即每个id)添加一个新列。 例如,为了计算行程id=1的长度,我将以这种方式使用开始和结束坐标:
from geopy.distance import vincenty
coords_1 = (41.144540, -8.562926)
coords_2 = (41.163172 -8.583821)
length = vincenty(coords_1, coords_2).m
length
1217881.558204788
和2相似,其余的。但是我想用熊猫数据帧来实现这一点
预期产出:
id lat lon length
0 1 41.144540 -8.562926 1217881.5582
1 1 41.144540 -8.562926 1217881.5582
2 1 41.163172 -8.583821 1217881.5582
3 2 41.163233 -8.583838 5.5979928
4 2 41.163198 -8.583886 5.5979928
您可以使用
.apply(...)
我无法让
vincenty
工作,显然它已被geodesic
取代。但这应该是可行的:您可以使用} (也称
groupby()
和^{aggregate()
)在单个命令中获取第一个和最后一个值:这给了你:
这几乎正是您需要输入到
vincenty()
来计算每个id
的距离的内容相关问题 更多 >
编程相关推荐