如何计算DataFrame中各坐标点与基准点的距离?
计算DataFrame中每个坐标点与第一个点的测地线距离
你推测用geodesic是完全正确的,它能精准计算地球表面两点间的最短测地线距离,非常适合处理经纬度坐标数据。以下是具体实现步骤:
步骤1:安装依赖库
如果还没安装geopy,先执行安装命令:
pip install geopy
步骤2:完整代码实现
import pandas as pd from geopy.distance import geodesic # 模拟你的DataFrame(实际使用时替换成你的数据) data = { 'lat': [45.23, 45.265, 45.278], 'lon': [81.3459, 81.346, 81.347], 'time': ['2021-04-25 12:31:15', '2021-04-25 12:33:46', '2021-04-25 12:40:23'] } df = pd.DataFrame(data) # 获取第一个点的坐标 first_lat, first_lon = df.iloc[0]['lat'], df.iloc[0]['lon'] first_point = (first_lat, first_lon) # 定义计算距离的函数 def get_distance(row): current_point = (row['lat'], row['lon']) # 返回公里数,可替换为.meters(米)或.miles(英里) return geodesic(first_point, current_point).kilometers # 批量计算所有点到第一个点的距离 df['distance_to_first'] = df.apply(get_distance, axis=1) # 查看结果 print(df)
关键说明
- 效率优化:数千行数据用
apply完全足够,geodesic的计算效率能轻松应对这个量级;如果数据量更大(比如百万级),可以考虑用向量化实现或者swifter库加速apply。 - 单位选择:根据需求替换单位属性,比如
.meters获取米级距离,.miles获取英里距离。 - 坐标顺序:
geodesic接受的参数是(纬度, 经度),和你的DataFrame列顺序一致,无需调整。
内容的提问来源于stack exchange,提问作者matrix_season
相关产品推荐
相关产品推荐

