将权重列表添加到 pandas 数据框中已创建的边缘列表,并将权重显示为图中的边缘标签

adding weight list to already created edgelist from pandas dataframe and display the weight as a edge label in graph

我的数据在 pandas 数据框中,它有源、目标、权重。

H=nx.from_pandas_edgelist(links,source='source',target='target')

用它来创建我的边缘列表,它没有添加权重的选项,除了 pd.DataFrame

之外,我还以不同的形式保存了我的数据

edges_df={'source':links['source'], 'target':links['target'], 'weights':links['value']} edges_source=links['source']
edges_target=links['target'] weights=links['value']

相同但结构不同,我尝试使用 nx.set_edge_attribute 但它给出了一个错误 not iterable/hashable ,而不是 G[u][v][w]

最简单的方法是在创建图表时使用 edge_attr 参数,如下所示。

H=nx.from_pandas_edgelist(links,source='source',target='target',edge_attr='weight')

如果您已经创建了图表并想在事后添加属性,您可以使用

for e in g.edges:
    g.edges[e]['weight'] = df.loc[(df.source == e[0]) & (df.target == e[1]),'weight'].values[0] #use .value[0] to ensure you get the value, not an array or series