来自 pandas 个带有颜色的数据框的网络
Network from pandas dataframe with colours
我需要使用以下数据创建一个网络
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 []
带有间接链接,显示 variables/nodes 之间的链接。
因此,例如,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.explode
。 networkx
有一个函数可以直接将分解后的df输入:
G = nx.from_pandas_edgelist(df.explode('List1'), source='String', target='List1')
也就是说,构建数据框的方式(即列表作为单元格条目)会引起很多麻烦,因此最好避免。
我需要使用以下数据创建一个网络
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 []
带有间接链接,显示 variables/nodes 之间的链接。 因此,例如,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.explode
。 networkx
有一个函数可以直接将分解后的df输入:
G = nx.from_pandas_edgelist(df.explode('List1'), source='String', target='List1')
也就是说,构建数据框的方式(即列表作为单元格条目)会引起很多麻烦,因此最好避免。