首页 > 解决方案 > Dataframe 是否可以表示图形?

问题描述

我想使用 pandas.DataFrame 表示 python 中节点之间的关系,并且每个关系都有权重,所以我使用了这样的数据框。

       nodeA nodeB nodeC
nodeA    0     5     1
nodeB    5     0     4   
nodeC    1     4     0

但我认为这是表达关系的不恰当方式,因为数据框是对称的,有重复的数据。

有没有比使用数据框在 python 中表示图形更合适的方法?

(对不起,我的英语不好)

标签: pythonpandasdataframegraph

解决方案


这似乎是一种可接受的表示图的方式,实际上与nextworkx. 例如,您可以nextworkx按如下方式恢复图形对象:

import networkx as nx
g = nx.from_pandas_adjacency(df)

print(g.edges)
# [('nodeA', 'nodeB'), ('nodeA', 'nodeC'), ('nodeB', 'nodeC')]
print(g.get_edge_data('nodeA', 'nodeB'))
# {'weight': 5}

如果您的图是稀疏的,您可能希望将其存储为边列表,例如这里讨论的。


推荐阅读