【问题标题】:Network from pandas dataframe with colours来自带有颜色的熊猫数据框的网络
【发布时间】:2021-01-21 03:09:20
【问题描述】:

我需要使用以下数据创建网络

String        List1                           
string1 [string3, string2, string20, string4]   
string2 [string100, string1, string4]
string3 [string1, string80, string2]
string4 [string13, string28, string12, string16]
string5 [string3, string8, string12, string6]
string6 []  

带有间接链接,显示变量/节点之间的链接。 因此,例如,string1 与 string3、string2、string30、string4 链接。 String2 与 string100、string1 和 string4 链接,以此类推。

我尝试过使用 Networkx

import itertools.combinations as comb

edges = set()
for col in df:
    for _, data in df.groupby(col):
        edges.update(comb(data.index, 2))

G = nx.Graph()
G.add_nodes_from(df.index)
G.add_edges_from(edges)

但它并没有达到我期望的输出效果。

【问题讨论】:

  • 你期望输出什么?
  • 嗨扭曲。我想创建一个图表,其中节点是我的字符串(它只是一个标签),如果存在关系(如项目符号列表中),它们之间的链接。颜色将是链接颜色,但它是次要的。我无法使用我在帖子中编写的代码创建图表
  • 好的,df 长什么样子?
  • 我试图以一种简单的方式重写我正在尝试做的事情。我认为我应该分解数据集以创建网络。现在,我的数据集看起来像在帖子中。感谢您的帮助

标签: python pandas networkx


【解决方案1】:

您确实应该使用df.explodenetworkx有一个函数,你可以直接将分解后的df输入:

G = nx.from_pandas_edgelist(df.explode('List1'), source='String', target='List1')

也就是说,构建数据框的方式(即作为单元格条目的列表)会引起很多麻烦,因此最好避免。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-22
    • 2016-12-09
    • 2021-02-15
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多