【问题标题】:Network- Create edges between one node and a list of nodes网络 - 在一个节点和节点列表之间创建边
【发布时间】:2017-12-22 10:36:41
【问题描述】:

我是 networkx 的新手,不知道如何读取我的特定数据格式。

我有一些看起来像(节点,它所连接的节点列表)的数据,如下所示:

('person 1', 'person 2, person 3, person 4')

我想添加边缘,使它们看起来像这样:

('person 1', 'person 2')
('person 1', 'person 3')
('person 1', 'person 4')

有没有办法指定第一个节点,然后遍历一个列表来获取其余节点?在我的 csv 文件中,一列是主节点,第二列是它连接到的节点列表,但我无法弄清楚如何一次将它们全部添加。

【问题讨论】:

    标签: nodes networkx edges


    【解决方案1】:

    虽然没有 bultin 方法,但你可以使用 Python 切片和列表推导将它们添加到一行中。

    import networkx as nx
    
    G = nx.Graph()
    nodes = list("ABCD")
    G.add_nodes_from(nodes)
    G.add_edges_from([(nodes[0],node) for node in nodes[1:]])
    

    nodes[1:] 是一个跳过第一项的列表

    【讨论】:

      【解决方案2】:

      回答我自己的问题(因为我终于弄明白了):

      首先我必须对第二列进行字符串拆分以获取各个名称,使用分隔符“,”或“,”和空格。

      MyData$2ndColumn = strsplit(MyData$2ndColumn, ", |,") 
      

      然后我按照问题的要求使用 unnest 将其分成四个不同的条目

      MyData <- unnest(MyData)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-16
        • 2023-04-02
        • 2018-12-02
        • 1970-01-01
        • 2017-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多