繁体   English   中英

将 Pandas dataframe 转换为邻接矩阵

[英]convert Pandas dataframe into adjacency matrix

我有一个 Pandas dataframe(930 行 × 50 列),如下所示:

指数 关键字 A 关键字 B 关键字 c
第 1 页 1 3 1
第2页 4 0 2
第 3 页 0 1 1

我想将其转换为邻接矩阵/加权图,其中每个关键字都是一个节点。 权重将是每个关键字之间组合的总和。

结果将是这样的:

关键字 A 关键字 B 关键字 C
关键字 A 0 3 8
关键字 B 3 0 4
关键字 C 8 4 0

解决方案看似简单:

adj = df.T @ df
np.fill_diagonal(adj.values, 0)

例如:

>>> df = pd.DataFrame([[1, 1, 3, 1], [2, 4, 0, 2], [3, 0, 1, 1]],
                      columns=["index", "A", "B", "C"]).set_index("index")
>>> df
       A  B  C
index
1      1  3  1
2      4  0  2
3      0  1  1
>>> adj = df.T @ df
>>> np.fill_diagonal(adj.values, 0)
>>> adj
   A  B  C
A  0  3  9
B  3  0  4
C  9  4  0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM