gpt4 book ai didi

Python:如何使用 networkx 创建与另一个数据框对应的图形?

转载 作者:太空宇宙 更新时间:2023-11-03 11:16:10 26 4
gpt4 key购买 nike

我有两个数据框 dfdf1df 包含一些节点的信息。所以

df  Name       Age
0 Jack 33
1 Anna 25
2 Emilie 49
3 Frank 19
4 John 42

df1包含两个人之间的联系次数信息。在 df1 中我们可以有一些没有出现在 df

中的人
df1    Name1    Name2   c
0 Frank Paul 2
1 Julia Anna 5
2 Frank John 1
3 Emilie Jack 3
4 Tom Steven 2
5 Tom Jack 5

我想用 df 中的节点和 df1 中的连接之间的信息创建一个邻接矩阵。

为了从 df1 创建邻接矩阵,我做了以下操作:

import networkx as nx
G = nx.Graph()
G = nx.from.pandas_dataframe(df1, 'Name1', 'Name2', ['c'])
adj = nx.adjacency_matrix(G)

但是,这种方式与df 没有直接的对应关系。事实上,我想生成一个 6x6 邻接矩阵,其中 row 0column 0 对应于 Jack第 1 行第 1 列对应于 Anna 等等。

最佳答案

NetworkX 返回的邻接矩阵是稀疏的。首先,将其转换为密集矩阵:

dense = nx.adjacency_matrix(G).todense()

创建一个数据框,其内容是邻接矩阵,行和列代表所有节点:

adj_df = pd.DataFrame(dense, index=G.nodes(), columns=G.nodes())

最后,按照 df 的定义,获取数据帧的子集:

adj_df.loc[df.Name, df.Name]
# Jack Anna Emilie Frank John
#Jack 0 0 1 0 0
#Anna 0 0 0 0 0
#Emilie 1 0 0 0 0
#Frank 0 0 0 0 1
#John 0 0 0 1 0

关于Python:如何使用 networkx 创建与另一个数据框对应的图形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51465663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com