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

按顺序为各InputID匹配仅可分配一次的最小Dist_km对应TargetID

按优先级分配唯一最近TargetID的实现方案

实现逻辑

  • 先将原始数据集按照InputID升序、Dist_km升序排序,保证优先处理ID更小的Input,且每个Input的候选Target按距离从近到远排列
  • 维护一个已占用TargetID的集合,用于快速校验Target是否已经被分配给更小的InputID
  • 按顺序遍历每个InputID,依次检查它的候选Target,取第一个未被占用的Target完成分配,同时将该Target标记为已占用

你的场景中TargetID总数量为1435,大于InputID的945,不存在无可用Target分配的异常情况,无需额外兜底逻辑

可直接运行的Python实现(基于pandas)

基础版本:

import pandas as pd

# 替换为你的原始数据文件路径,支持csv/xlsx等pandas可读取格式
df = pd.read_csv("distance_data.csv")

# 按InputID升序、距离升序排序全表
df_sorted = df.sort_values(by=["InputID", "Dist_km"], ascending=[True, True])

used_targets = set()
match_result = []

# 按顺序遍历所有InputID
for input_id in df_sorted["InputID"].unique():
    # 筛选当前InputID的所有候选Target
    current_candidates = df_sorted[df_sorted["InputID"] == input_id]
    for _, row in current_candidates.iterrows():
        target = row["TargetID"]
        if target not in used_targets:
            # 匹配到最近可用Target,保存结果
            match_result.append({
                "InputID": input_id,
                "TargetID": target,
                "Dist_km": row["Dist_km"]
            })
            used_targets.add(target)
            break

# 导出匹配结果到文件
result_df = pd.DataFrame(match_result)
result_df.to_csv("match_result.csv", index=False)
  • 性能优化版本(适合百万级以上的大数据量场景):
import pandas as pd

df = pd.read_csv("distance_data.csv")
df_sorted = df.sort_values(by=["InputID", "Dist_km"], ascending=[True, True])

# 提前按InputID分组,避免重复过滤全表
input_groups = df_sorted.groupby("InputID")
used_targets = set()
match_result = []

for input_id, group in input_groups:
    for _, row in group.iterrows():
        target = row["TargetID"]
        if target not in used_targets:
            match_result.append({
                "InputID": input_id,
                "TargetID": target,
                "Dist_km": row["Dist_km"]
            })
            used_targets.add(target)
            break

result_df = pd.DataFrame(match_result)
result_df.to_csv("match_result.csv", index=False)

内容的提问来源于stack exchange,提问作者Justina Vitkutė

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:57:06