【问题标题】:convert Pandas dataframe into adjacency matrix将 Pandas 数据帧转换为邻接矩阵
【发布时间】:2021-04-15 16:12:33
【问题描述】:

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

index Keyword A Keyword B Keyword c
Page 1 1 3 1
Page 2 4 0 2
Page 3 0 1 1

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

结果会是这样的:

Keyword A Keyword B Keyword C
Keyword A 0 3 8
Keyword B 3 0 4
Keyword C 8 4 0

【问题讨论】:

  • 这种情况下的输出是什么?
  • 我更新了问题,以便您可以看到预期的输出。
  • 计数的规则是什么?你怎么得到Keyword B | Keyword A 的号码是3?
  • 关键字 B : 关键字 C 应该是 6 吧?
  • A:C 应该是9 = (1*1 + 4*2 + 0*1)

标签: python pandas adjacency-matrix


【解决方案1】:

解决方案看似简单:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 2016-08-03
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多