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

如何基于pandas DataFrame生成网络图边列表并过滤自连接

Pandas 生成无自连接边列表方案

核心逻辑

通过拆分逗号分隔的同事列、行展开、过滤自连接三步完成需求:

  1. 将Co-Workers列的逗号分隔字符串拆分为列表
  2. 列表爆炸为多行,对应每行一个同事关系
  3. 过滤掉起点、终点相同的自连接记录

可运行代码

import pandas as pd

# 样例数据构造,实际使用时替换为你自己的DataFrame即可
df = pd.DataFrame({
    'Name': ['A', 'B', 'C', 'D', 'E'],
    'Co-Workers': ['A,B,C,D', 'A,B,C,D', 'A,B,C,E', 'A,B,D,E', 'C,D,E']
})

# 处理逻辑
edge_df = (
    df.assign(to=df['Co-Workers'].str.split(','))  # 拆分同事列为列表
      .explode('to')  # 列表展开为多行
      .rename(columns={'Name': 'from'})  # 重命名源列为from
      .query('from != to')  # 过滤自连接
      [['from', 'to']]  # 只保留边列表需要的两列
)

print(edge_df)

样例输出

fromto
AB
AC
AD
BA
BC
BD
CA
CB
CE
DA
DB
DE
EC
ED

可选优化:去重双向边

如果你的网络是无向图,不需要保留A→B和B→A两条重复边,可以追加以下代码:

edge_df['temp_sort'] = edge_df.apply(lambda x: tuple(sorted([x['from'], x['to']])), axis=1)
edge_df = edge_df.drop_duplicates('temp_sort')[['from', 'to']]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:12:00