Cle*_*lem 5 python adjacency-matrix pandas
我有一个 Pandas 数据框(930 行 \xc3\x97 50 列),如下所示:
\n| 指数 | 关键词A | 关键词B | 关键字 c |
|---|---|---|---|
| 第1页 | 1 | 3 | 1 |
| 第2页 | 4 | 0 | 2 |
| 第3页 | 0 | 1 | 1 |
我想将其转换为邻接矩阵/加权图,其中每个关键字都是一个节点。权重是每个关键字之间的组合之和。
\n结果将是这样的:
\n| 关键词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)
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)