You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Pandas的距离计算、按范围过滤及数值汇总问题求助

你已经生成了全量距离矩阵的前提下,用向量化矩阵运算就能直接得到结果,不需要遍历任何列表,代码非常简洁:

实现步骤

  1. 首先构建ID到数值的映射序列,方便后续匹配求和
# 生成ID与NumberValue的对应关系
value_map = df_latlongs.set_index('IDVALUE')['NumberValue']
  1. 按你需要的距离区间生成掩码矩阵,符合区间要求的位置标记为1,否则为0

注:你的预期输出里>100m应该是笔误,这里默认按你描述的三个区间调整为 <500m/500-1000m/>1000m,可自行修改阈值

# 三个区间的布尔掩码,距离单位为千米
mask_lt500 = (latlong_df < 0.5).astype(int)
mask_500_1000 = ((latlong_df >= 0.5) & (latlong_df < 1)).astype(int)
mask_gt1000 = (latlong_df >= 1).astype(int)
  1. 直接用掩码矩阵和数值序列做点积运算,一步得到每个ID对应区间的总和
# 生成结果表
result_df = pd.DataFrame({
    'IDVALUE': latlong_df.index,
    '<500m': mask_lt500.dot(value_map),
    '500-1000m': mask_500_1000.dot(value_map),
    '>1000m': mask_gt1000.dot(value_map)
}).reset_index(drop=True)
  1. 如果需要关联回原始数据集的经纬度等字段,直接合并即可
final_df = df_latlongs.merge(result_df, on='IDVALUE', how='left')

方案优势

全程无循环、无中间冗余列表生成,完全基于pandas和numpy的向量化运算,哪怕是上万级别的点数据,运算效率也远高于遍历匹配的方案。如果后续需要调整距离区间,只需要修改掩码的阈值即可,无需修改整体逻辑。

内容的提问来源于stack exchange,提问作者Nhyi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 16:15:04