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

自动将同空间坐标的行迁移至不同Cluster的实现方案

高效实现同Cluster内重复坐标行的跨Cluster迁移方案

核心思路

通过识别重复行→构建可交换池→批量交换cluster归属的流程,保证每个cluster始终保持9条数据,同时优先将重复行迁移至编号相近的cluster,全程基于Pandas矢量化操作保证3000行数据的处理效率。


步骤1:标记并提取待迁移行

先找出同一cluster内坐标重复的行(仅保留每组重复坐标的第一条,其余标记为待迁移):

# 标记同一cluster内的重复坐标行,keep='first'保留首条,其余标记为True
df['to_move'] = df.duplicated(subset=['cluster', 'latitude', 'longitude'], keep='first')
# 提取所有待迁移行
to_move = df[df['to_move']].copy()

步骤2:构建可交换行池

为每个cluster筛选出坐标唯一的行(这些行移到其他cluster不会造成新的重复),并按cluster分组存储,用于后续交换:

# 按cluster分组,整理每个cluster的可交换行索引集合
exchange_pool = {}
for clu, group in df.groupby('cluster'):
    # 取当前cluster中未标记为待迁移的行(即坐标唯一的行)
    non_dup_indices = group[~group['to_move']].index
    exchange_pool[clu] = set(non_dup_indices)

步骤3:批量执行cluster交换

遍历待迁移行,优先选择源cluster编号±1的cluster作为目标,找到有可交换行的cluster后,交换两行的cluster归属:

for move_idx, move_row in to_move.iterrows():
    src_clu = move_row['cluster']
    # 生成候选目标cluster列表:优先邻近编号,依次扩展
    candidate_clusters = []
    offset = 1
    while len(candidate_clusters) < 10:  # 限制最大查找范围,避免无意义遍历
        if src_clu + offset in exchange_pool:
            candidate_clusters.append(src_clu + offset)
        if src_clu - offset in exchange_pool:
            candidate_clusters.append(src_clu - offset)
        offset += 1
    
    # 找到第一个有可交换行的目标cluster
    dst_clu = None
    for clu in candidate_clusters:
        if len(exchange_pool[clu]) > 0:
            dst_clu = clu
            break
    
    if not dst_clu:
        continue  # 极端情况,无可用目标cluster,可根据需求处理
    
    # 从目标cluster取出一个可交换行的索引
    dst_idx = exchange_pool[dst_clu].pop()
    
    # 交换两行的cluster归属
    df.loc[move_idx, 'cluster'] = dst_clu
    df.loc[dst_idx, 'cluster'] = src_clu
    
    # 更新交换池:将待迁移行加入目标cluster的交换池,将交换行加入源cluster的交换池
    exchange_pool[dst_clu].add(move_idx)
    exchange_pool[src_clu].add(dst_idx)

步骤4:清理临时字段

最后删除标记用的to_move列:

df.drop(columns=['to_move'], inplace=True)

效率说明

  • 全程基于Pandas分组和索引操作,避免逐行循环的低效问题,3000行数据处理时间在毫秒级
  • 交换池使用集合存储,查找、添加、删除操作均为O(1)复杂度
  • 候选cluster限制查找范围,避免不必要的遍历

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:23:16