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

如何过滤无向网络中跨类节点的连接边并去除重复记录

无向网络跨类边去重方法

核心逻辑

无向边的重复本质是两个节点的顺序颠倒,只需要给每条边生成与顺序无关的唯一标识,再按标识去重即可。

操作步骤

  • 基础筛选:过滤出Source_Class != Target_Class的跨类边,得到初步结果
  • 生成标准化边标识:对每条边的两个节点做排序处理,统一生成和顺序无关的键值,这样(1,2)和(2,1)会生成完全相同的标识
  • 按生成的标准化标识去重,每个标识仅保留1条记录,最后添加值为1的Different列即可得到目标结果

常用工具实现示例

Python(Pandas)

import pandas as pd

# 读取原始数据,分隔符适配多空格场景
df = pd.read_csv("你的数据文件路径", sep="\s+")

# 1. 筛选跨类边
cross_df = df[df["Source_Class"] != df["Target_Class"]].copy()

# 2. 生成标准化边键,sorted后正反边生成的键完全一致
cross_df["edge_key"] = cross_df.apply(lambda x: tuple(sorted([x["Source"], x["Target"]])), axis=1)

# 3. 按键去重,默认保留首次出现的记录,符合你的预期输出规则
result = cross_df.drop_duplicates("edge_key")[["Source", "Target"]]
result["Different"] = 1

# 输出结果
print(result)

SQL

如果数据存储在关系型数据库中,可直接用以下语句查询得到结果:

SELECT DISTINCT
    LEAST(Source, Target) AS Source,
    GREATEST(Source, Target) AS Target,
    1 AS Different
FROM 你的表名
WHERE Source_Class != Target_Class

Excel

如果使用Excel处理少量数据:

  1. 新增辅助列,公式为=MIN(A2,B2)&"|"&MAX(A2,B2)(假设Source在A列、Target在B列)
  2. 新增筛选条件,保留Source_Class != Target_Class的行
  3. 对筛选后的结果,按辅助列执行「删除重复值」操作即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:36:04