如何将 Graph (NetworkX) 的节点属性输出到 DataFrame (Pandas)
How to output attributes of nodes of a Graph (NetworkX) into a DataFrame (Pandas)
我正在使用网络作为西班牙戏剧中角色之间互动的图表。这是一个可视化:
我将节点(角色)的几个属性作为数据框传递给网络,以便我可以使用这些值(例如,节点的颜色由角色的性别设置)。我想用 NetworkX 为每个节点计算不同的值(度数、中心性、中间性……);然后,我想将我的节点属性以及使用 NetworkX 计算的值作为 DataFrame 输出。我知道我可以询问节点的特定属性,例如:
nx.get_node_attributes(graph,'degree')
我可以使用它构建一个 DataFrame,但我想知道是否有更优雅的解决方案。我也试过:
nx.to_dict_of_dicts(graph)
但这只输出边,不输出节点信息。
那么,有什么帮助吗?谢谢!
如果我对你的问题的理解正确,你想要一个包含节点和每个节点的一些属性的 DataFrame。
G = nx.Graph()
G.add_node(1, {'x': 11, 'y': 111})
G.add_node(2, {'x': 22, 'y': 222})
您可以使用list comprehension
获取特定节点属性:
pd.DataFrame([[i[0], i[1]['x'], i[1]['y']] for i in G.nodes(data=True)]
, columns=['node_name', 'x', 'y']).set_index('node_name')
# x y
#node_name
#1 11 111
#2 22 222
或者如果有很多属性并且您需要所有属性,这可能是更好的解决方案:
pd.DataFrame([i[1] for i in G.nodes(data=True)], index=[i[0] for i in G.nodes(data=True)])
我正在使用网络作为西班牙戏剧中角色之间互动的图表。这是一个可视化:
我将节点(角色)的几个属性作为数据框传递给网络,以便我可以使用这些值(例如,节点的颜色由角色的性别设置)。我想用 NetworkX 为每个节点计算不同的值(度数、中心性、中间性……);然后,我想将我的节点属性以及使用 NetworkX 计算的值作为 DataFrame 输出。我知道我可以询问节点的特定属性,例如:
nx.get_node_attributes(graph,'degree')
我可以使用它构建一个 DataFrame,但我想知道是否有更优雅的解决方案。我也试过:
nx.to_dict_of_dicts(graph)
但这只输出边,不输出节点信息。
那么,有什么帮助吗?谢谢!
如果我对你的问题的理解正确,你想要一个包含节点和每个节点的一些属性的 DataFrame。
G = nx.Graph()
G.add_node(1, {'x': 11, 'y': 111})
G.add_node(2, {'x': 22, 'y': 222})
您可以使用list comprehension
获取特定节点属性:
pd.DataFrame([[i[0], i[1]['x'], i[1]['y']] for i in G.nodes(data=True)]
, columns=['node_name', 'x', 'y']).set_index('node_name')
# x y
#node_name
#1 11 111
#2 22 222
或者如果有很多属性并且您需要所有属性,这可能是更好的解决方案:
pd.DataFrame([i[1] for i in G.nodes(data=True)], index=[i[0] for i in G.nodes(data=True)])