pandas 计算DataFrame中固定点的两个坐标之间的距离

vsaztqbk  于 2023-01-28  发布在  其他
关注(0)|答案(3)|浏览(200)

我在Pandas中有以下DataFrame:
| 电码|纬度|经度|
| - ------|- ------|- ------|
| 一|小行星40| -3.993046 |
| 二|小行星41.490604|一、六九六五七二|
| 03|小行星39287817| -0.435448 |
| 四|小行星38.594316| -0.128489 |
| 零五|三十六九零零零七九九| -3.423063 |
| 零六|三十六五百四十四一千六百六十七| -4.625 |
我想创建一个名为km_to_fixed_coords的新列,在该列中计算到新固定点的坐标距离,该距离对于所有行(36.7196, -4.42002)都相同。
此代码计算两个坐标之间的距离,单位为公里。

import geopy.distance
# (latitude, longitude)
coords_1 = (x, y)
fixed_coords = (36.7196, -4.42002)

print(geopy.distance.distance(coords_1, fixed_coords).km)

生成的DataFrame应如以下示例所示:
| 电码|纬度|经度|到固定坐标的公里数|
| - ------|- ------|- ------|- ------|
| 一|小行星40| -3.993046 |小行星411|
| 二|小行星41.490604|一、六九六五七二|小行星748.248244|
| 03|小行星39287817| -0.435448 |小行星451|
| 四|小行星38.594316| -0.128489 |小行星432|
| 零五|三十六九零零零七九九| -3.423063 |小行星91|
| 零六|三十六五百四十四一千六百六十七| -4.625342 |26.96511660526825|

dgenwo3n

dgenwo3n1#

from typing import Tuple
import geopy.distance

def distance(
    lat: float, lon: float, fixed_coords: Tuple[float] = (36.7196, -4.42002)
) -> float:
    return geopy.distance.distance((lat, lon), fixed_coords).km

df["km_to_fixed_coords"] = df.apply(lambda row: distance(row.latitude, row.longitude))
wooyq4lh

wooyq4lh2#

在这样的行上应用一个方法

import geopy.distance

# (latitude, longitude)
fixed_coords = (36.7196, -4.42002)

df['km_to_fixed_coords'] = df.apply(
    lambda row: geopy.distance.distance((row.latitude, row.longitude), fixed_coords).km,
    axis=1
)
dwbf0jvd

dwbf0jvd3#

从django.contrib.gis.geos导入点

当前位置(经度、纬度)

当前坐标=点(-3.993046,40.410323)
#目标位置(经度、纬度)
目标坐标=点(1.696572,41.490604)
#以公里为单位计算距离
距离=当前坐标距离(目标坐标)* 100

相关问题