我有一个 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/