将权重列表添加到 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
我的数据在 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