networkx中的边权重

4

如何从边列表中给每条边分配一个权重,该权重等于节点i和j之间交互的次数?

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import networkx as nx
import scipy.sparse

df = pd.read_csv("thiers_2011.csv", header = None)
df = df.rename(columns={0: "t", 1: "id1", 2: "id2", 3: "C1", 4: "C2"})

edge_list = np.zeros((len(df),2))
edge_list[:,0] = np.array(df["id1"]) 
edge_list[:,1] = np.array(df["id2"]) 

G = nx.Graph()
G.add_edges_from(edge_list)

1
首先计算交互数量,然后使用add_weighted_edges_from函数。 - keramat
1个回答

3

您可以先将 pandas 表汇总到有权重列的表中,然后使用该边缘列将其加载到 networkx 中:

df["weight"] = 1.0
df = df.groupby([<id_columns>]).agg({"wight": sum}).reset_index()

为了加载它,您也可以使用from_pandas_edgelist
G = nx.from_pandas_edgelist(source='source_column', target='target_column', edge_attr="weight")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接