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

如何在R中建立列值间关联并构建网络图?

基于共同Manager生成关联Location并构建网络图

需求说明

给定如下数据框:

LocationManager
L1M45
L2M45
L34M12
L5M45
L23M12
L4M3
L11M45

需要生成包含Location和Links列的新数据框,Links列存储与该行Location拥有相同Manager的其他所有Location,目标结果示例如下:

LocationLinks
L1L2,L5
L2L1,L5
L5L1,L2
L23L34
L4
L11

完成后需确认是否可构建对应的网络图。


实现代码(Pandas)

以下是用Python Pandas实现需求的代码:

import pandas as pd

# 构造原始数据
data = {
    'Location': ['L1', 'L2', 'L34', 'L5', 'L23', 'L4', 'L11'],
    'Manager': ['M45', 'M45', 'M12', 'M45', 'M12', 'M3', 'M45']
}
df = pd.DataFrame(data)

# 按Manager分组,获取每组的Location列表
grouped_locs = df.groupby('Manager')['Location'].apply(list).reset_index(name='group_members')

# 合并分组信息到原始数据
merged_df = df.merge(grouped_locs, on='Manager')

# 生成Links列:剔除当前Location后拼接剩余项
merged_df['Links'] = merged_df.apply(
    lambda row: ','.join([loc for loc in row['group_members'] if loc != row['Location']]),
    axis=1
)

# 提取目标列,得到最终结果
result_df = merged_df[['Location', 'Links']]
print(result_df)

代码逻辑说明

  1. 按Manager分组,获取每个经理对应的所有Location列表;
  2. 将分组信息合并回原始数据框,让每一行都能获取到同组的所有Location;
  3. 对每一行,过滤掉自身的Location,将剩余同组Location用逗号拼接成字符串,存入Links列;
  4. 提取Location和Links列,得到目标数据框。

网络图构建

完全可以构建对应的网络图,具体实现如下:

核心逻辑

  • 节点:所有Location;
  • 边:两个Location拥有相同Manager时,在它们之间建立无向边。

实现代码(NetworkX)

import networkx as nx
import matplotlib.pyplot as plt

# 初始化无向图
G = nx.Graph()

# 添加所有Location作为节点
G.add_nodes_from(df['Location'])

# 为同Manager组内的Location添加两两连接
for _, group in df.groupby('Manager'):
    locs = group['Location'].tolist()
    # 生成组内所有两两组合,添加边
    for i in range(len(locs)):
        for j in range(i+1, len(locs)):
            G.add_edge(locs[i], locs[j])

# 绘制网络图
plt.figure(figsize=(8, 6))
nx.draw(G, with_labels=True, node_size=1500, node_color='lightblue', font_size=12)
plt.title('Location Network (Connected by Shared Manager)')
plt.show()

运行代码后会生成可视化网络图,直观展示哪些Location因共同经理而关联。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:39:40