gpt4 book ai didi

python - 我想将节点和距离矩阵转换成一个表,其中包含 node1、node2 的列以及它们之间的距离

转载 作者:行者123 更新时间:2023-12-02 18:49:16 28 4
gpt4 key购买 nike

我正在处理 csv 文件,该文件包含每个节点的标题和每个节点的相应行,每个数据字段对应于两个节点之间的差异,如下所示:

<表类="s-表"><头>空白438719094...8545<正文>401280176214061589...10173812800681202385...143371176268105030...090140620250300...1559941589385000...1742................0...854510171433015591742...0

(在此上下文中 0 表示没有连接,因为它们是相同的节点或它们未连接)

我想改变布局,让它看起来像这样:

<表类="s-表"><头>节点1节点2距离<正文>44043812804711762

以此类推,包括所有节点及其连接

是否有 pythonic 方式来执行此操作?

最佳答案

对于大多数图形操作,如果您使用图形库,您会发现巨大的优势。在这种情况下,您可以轻松地从数据框创建一个图形并将这些距离添加为 edge weights .

然后对于所需的输出,您只需要在这种情况下检索图边的权重,这可以使用 NetworkX 轻松完成。与:

import networkx as nx

G = nx.from_pandas_adjacency(df)
weights = nx.get_edge_attributes(G, 'weight')
print(weights)
{(94, 4): 1589,
(94, 38): 385,
(4, 38): 1280,
(4, 71): 1762,
(4, 90): 1406,
(38, 71): 681,
(38, 90): 202,
(71, 90): 503}

或者,如果您希望将结果作为数据框:

(pd.DataFrame(weights.keys(), columns=['node1', 'node2'])
.assign(Distance=weights.values()))

node1 node2 Distance
0 94 4 1589
1 94 38 385
2 4 38 1280
3 4 71 1762
4 4 90 1406
5 38 71 681
6 38 90 202
7 71 90 503

关于python - 我想将节点和距离矩阵转换成一个表,其中包含 node1、node2 的列以及它们之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67001674/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com