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

Cle*_*lem 5 python adjacency-matrix pandas

我有一个 Pandas 数据框(930 行 \xc3\x97 50 列),如下所示:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n
指数关键词A关键词B关键字 c
第1页131
第2页402
第3页011
\n
\n

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

\n

结果将是这样的:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n
关键词A关键词B关键词C
关键词A038
关键词B304
关键词C840
\n

orl*_*rlp 4

解决方案看似简单:

adj = df.T @ df
np.fill_diagonal(adj.values, 0)
Run Code Online (Sandbox Code Playgroud)

例如:

>>> 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
Run Code Online (Sandbox Code Playgroud)