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

Pandas如何使用节点DataFrame过滤两端均有效的边DataFrame

Pandas基于节点表过滤边表的实现方案

需求背景

现有两个Pandas DataFrame:

  • 存储节点数据的nodes表
  • 存储边数据的edges表
    按照业务逻辑,所有边的两个端点都应当对应nodes表中已存在的节点,需要过滤掉存在非法端点的边记录。

数据样例

edges表

每行存储包含2个字符串的列表,分别对应边的两个端点,样例如下:

edges
11                 ["INET_N_752", "INET_N_1730"]
253     ["SEQ_5753__L_LMGN", "SEQ_5369__S_LMGN"]
254         ["N_211_L_LMGN", "SEQ_5753__L_LMGN"]
277            ["SEQ_5753__L_LMGN", "SEQ_867_p"]
278                   ["SEQ_867_p", "SEQ_871_p"]
279            ["SEQ_871_p", "SEQ_5789__L_LMGN"]

nodes表

每行存储仅包含1个字符串的列表,对应节点的唯一标识,样例如下:

nodes
15            ["INET_N_752"]
16           ["INET_N_1730"]
196     ["SEQ_5753__L_LMGN"]
197     ["SEQ_5369__S_LMGN"]
198         ["N_211_L_LMGN"]
222            ["SEQ_867_p"]

过滤规则

仅保留边的两个端点均存在于nodes表中的记录,例如edges表中索引为11的记录两个端点都在nodes表中,属于需要保留的合法记录。

验证可行的实现代码

edges[(edges.apply(lambda x: x[0]).isin(nodes.apply(lambda x: x[0])) &
       edges.apply(lambda x: x[1]).isin(nodes.apply(lambda x: x[0])))]

代码逻辑说明

  1. 用nodes.apply(lambda x: x[0])提取nodes表中所有节点ID,生成合法节点的匹配集合
  2. 分别提取edges表每行的第一个端点edges.apply(lambda x: x[0])和第二个端点edges.apply(lambda x: x[1])
  3. 通过isin()方法判断两个端点是否都属于合法节点集合,两个条件同时满足的边记录会被保留

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:21:02