【问题标题】:read a weighted adjacency node list with more than one target nodes from csv file in python从python中的csv文件中读取具有多个目标节点的加权邻接节点列表
【发布时间】:2018-06-24 13:54:15
【问题描述】:

我在 csv 文件中有一个邻接列表,如下所示:

'a','b','0.5','c','0.34','e','0.25'\n

'b','c','0.78','d','0.3','e','0.25'\n

第一个“列”表示起始节点,之后的“列”表示相邻节点及其边缘的权重。该文件包含近 17.000 行,其中行有 341 个元素。

我的问题是如何在 Python 中将以前的数据表示为无向图?

我已经尝试过 NetworkX 的 read_adjlist,但这不适用于加权边缘。

【问题讨论】:

    标签: python csv graph adjacency-list weighted


    【解决方案1】:

    在出现更好的解决方案之前,您可以将 csv 转换为 pandas 数据框,然后将该数据框转换为边缘列表。然后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'])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-21
      • 1970-01-01
      相关资源
      最近更新 更多