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

如何基于漫威英雄网络DataFrame重复行统计为图边添加权重?

解决方法

1. 读取数据集

先通过pandas加载漫威英雄社交网络数据集:

import pandas as pd

# 读取本地的hero-network.csv文件
df = pd.read_csv('hero-network.csv')

2. 统计重复行作为边权重

针对完全重复的行(即hero1和hero2顺序完全一致的重复记录),有两种高效的统计方式:

方式一:使用groupby+size()

通过分组两列数据,直接统计每组的行数(即重复次数,也就是边的权重):

# 按hero1和hero2分组,统计每组的重复次数作为权重
weighted_edges = df.groupby(['hero1', 'hero2']).size().reset_index(name='weight')

方式二:使用value_counts()

直接调用value_counts()获取所有唯一行的计数,再转为标准DataFrame格式:

# 统计所有唯一行的出现次数,并重命名权重列
weighted_edges = df.value_counts().reset_index(name='weight')

3. (可选)处理无向图的对称边

如果你的图是无向图(比如英雄A-英雄B和英雄B-英雄A属于同一条边),需要先统一英雄对的顺序再统计:

# 对每行的两个英雄按名称排序,确保对称对被视为同一组
df['sorted_pair'] = df.apply(lambda row: tuple(sorted([row['hero1'], row['hero2']])), axis=1)
# 按排序后的英雄对分组统计权重
weighted_edges = df.groupby('sorted_pair').size().reset_index(name='weight')
# 将排序后的元组拆分为两列
weighted_edges[['hero1', 'hero2']] = pd.DataFrame(weighted_edges['sorted_pair'].tolist(), index=weighted_edges.index)
# 移除临时辅助列
weighted_edges = weighted_edges.drop('sorted_pair', axis=1)

关键说明

  • 两种基础统计方法都能快速完成去重+权重统计,适合处理大规模数据集;
  • 无向图场景下必须处理对称边,否则会导致同一条边被拆分统计,权重结果错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:45:34