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

如何将NetworkX节点度数值添加至原始Pandas DataFrame?

解决NetworkX节点度数添加到Pandas DataFrame的问题

问题场景

你的DataFrame结构如下:

Focal_Coachsibling_coach_idyears_under_focalcoach_name
1210Bill Belichick
134Bill Belichick
246Andy Reid

通过NetworkX构建加权图并重新命名节点后,执行sibling_df_agg['Degree']=G_weighted.degree(sibling_df_agg['coach_name'])得到的是包含节点名称和度数的元组,无法直接进行数值操作。

最佳实现方法

方法1:将度数转换为字典后映射(推荐)

先把NetworkX返回的度数结果转换成字典,再利用Pandas的map方法快速匹配每个教练的度数:

# 生成度数字典:键是教练名称,值是对应的度数
degree_dict = dict(G_weighted.degree())
# 映射到DataFrame的新列中
sibling_df_agg['Degree'] = sibling_df_agg['coach_name'].map(degree_dict)

方法2:使用apply提取元组的数值

如果已经生成了包含元组的Degree列,可以直接用apply提取元组的数值部分:

# 提取元组的第二个元素(度数数值)
sibling_df_agg['Degree'] = sibling_df_agg['Degree'].apply(lambda x: x[1])

方法3:通过节点属性获取度数

先将度数设为图的节点属性,再提取映射到DataFrame:

# 给所有节点添加degree属性
nx.set_node_attributes(G_weighted, dict(G_weighted.degree()), 'degree')
# 提取属性值到DataFrame
sibling_df_agg['Degree'] = sibling_df_agg['coach_name'].apply(lambda x: G_weighted.nodes[x]['degree'])

效果验证

处理后的DataFrame会变为:

Focal_Coachsibling_coach_idyears_under_focalcoach_nameDegree
1210Bill Belichick2
134Bill Belichick2
246Andy Reid1

此时可直接执行数值操作,比如筛选度数大于指定值的数据:

# 筛选度数大于1的教练数据
filtered_df = sibling_df_agg[sibling_df_agg['Degree'] > 1]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:40:47