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

如何基于dataframe列构建图:节点为user_id、friend_id,边由IsFriend判定

基于DataFrame生成好友关联图的实现方法

我们以Python生态常用库为例,实现规则如下:

  • 节点:提取User_ID、Friend_Id两列的所有唯一值作为全部节点
  • 边:仅当IsFriend字段值为1时,在对应User_ID和Friend_Id节点之间创建边

具体实现步骤

1. 导入依赖库

需要用到pandas处理表格数据,networkx构建关联图,可选matplotlib实现可视化:

import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt

2. 构造示例DataFrame

你给出的参考数据对应构造代码如下:

data = {
    "User_ID": [1, 2, 3],
    "Friend_Id": [2, 3, 4],
    "IsFriend": [1, 1, 0]
}
df = pd.DataFrame(data)

3. 提取节点和边数据

# 提取所有唯一节点
all_nodes = pd.concat([df["User_ID"], df["Friend_Id"]]).unique()
# 过滤出IsFriend=1的边数据
edges = df[df["IsFriend"] == 1][["User_ID", "Friend_Id"]].values.tolist()

4. 构建关联图

# 初始化无向图(如果需要构建有向关联图,替换为nx.DiGraph()即可)
G = nx.Graph()
# 添加所有节点
G.add_nodes_from(all_nodes)
# 添加所有边
G.add_edges_from(edges)

5. (可选)可视化关联图

# 设置画布尺寸
plt.figure(figsize=(6,4))
# 用弹簧布局展示节点,固定随机种子保证布局稳定
pos = nx.spring_layout(G, seed=42)
# 绘制节点、边和标签
nx.draw(G, pos, with_labels=True, node_color='lightblue', node_size=1500, font_size=12, font_weight='bold')
nx.draw_networkx_edges(G, pos, edge_color='gray')
plt.title("好友关联图")
plt.show()

结果说明

按照你的示例数据,最终生成的图会包含4个节点(1、2、3、4),其中1和2相连、2和3相连,节点4没有关联边。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:15:03