python - 将 Pandas 数据帧转换为邻接矩阵

标签 python pandas adjacency-matrix

我有一个 Pandas 数据框(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

关于python - 将 Pandas 数据帧转换为邻接矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65654656/

相关文章:

Python 网络服务

python - 如何在 Python 2.7 中使用 StringIO 解决 TypeError?

python - Pandas 按行添加另一列

python - Python 中的邻接矩阵

c++ - 在邻接矩阵上应用广度和深度优先搜索?

python - 无法在 Flask 和 sqlalchemy 中多次导入数据库对象

python - 将数据保存到数据库时出错

python - 命名从 CountVectorizer Vector 创建的 DataFrame 列

python - 如何更改 Pandas 中分组条形图的颜色?

java - 在 Java 中构建稀疏矩阵而不使用哈希表?