2024-04-26 23:02:36 发布
网友
我在csv文件中有一个邻接列表,如下所示:
'a','b','0.5','c','0.34','e','0.25'\n 'b','c','0.78','d','0.3','e','0.25'\n
等等
第一个“列”表示起始节点,之后的“列”表示相邻节点及其边的权重。该文件包含近17000行,其行包含341个元素。你知道吗
我的问题是如何在Python中将前面的数据表示为无向图?你知道吗
我已经尝试过NetworkX中的read_adjlist,但这不适用于加权边。你知道吗
在出现更好的解决方案之前,您可以将您的csv转换为pandas数据帧,并将该数据帧转换为edgelist。networkx有一个方法:from_pandas_edgelist()
import pandas as pd import networkx as nx df = pd.read_csv('adj.csv', header=None) adj_df = df[[0,1,2]] for i in range(3, df.shape[1], 2): df.drop(labels =[1, 2], inplace=True, axis=1) df.rename(columns={i:1, i+1:2}, inplace=True) adj_df = adj_df.append(df[[0,1,2]]) adj_df.rename(columns={2:'weight'}, inplace=True) G=nx.from_pandas_edgelist(adj_df, 0, 1, ['weight'])
在出现更好的解决方案之前,您可以将您的csv转换为pandas数据帧,并将该数据帧转换为edgelist。networkx有一个方法:from_pandas_edgelist()
相关问题 更多 >
编程相关推荐