从python中的csv文件中读取具有多个目标节点的加权邻接节点列表

2024-04-26 23:02:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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,但这不适用于加权边。你知道吗


Tags: 文件csvnetworkx元素列表read节点中将
1条回答
网友
1楼 · 发布于 2024-04-26 23:02:36

在出现更好的解决方案之前,您可以将您的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'])

相关问题 更多 >