我正在尝试编写一个函数,该函数采用图形并返回一个 DataFrame,其中第一列是具有最高中心性度量的节点列表,第二列是最高中心性度量的值。
下面附上我的代码,我不知道如何完成它。如何在没有其他功能的情况下找到最高中心性?
def summary(G):
df = pd.DataFrame()
dc=nx.degree_centrality(G)
cc=nx.closeness_centrality(G)
bc=nx.closeness_centrality(G)
df['Nodes with the highest centrality measure']= #addcodehere
df['Value of the highest centrality measure']= #addcodehere
return df.set_index(['dc','cc','bc'])
最佳答案
你可以这样做:
# Imports and graph creation (you don't need them in your function)
import networkx as nx
import pandas as pd
G = nx.fast_gnp_random_graph(20, 0.1)
创建中心性字典:
cc = nx.closeness_centrality(G)
cc
看起来像这样:然后使用
from_dict
创建数据帧:df = pd.DataFrame.from_dict({
'node': list(cc.keys()),
'centrality': list(cc.values())
})
df
看起来像这样:然后按中心性降序排序:
df = df.sort_values('centrality', ascending=False)
所以
df
看起来像这样:并返回结果。完整代码是:
def summary(G):
cc = nx.closeness_centrality(G)
df = pd.DataFrame.from_dict({
'node': list(cc.keys()),
'centrality': list(cc.values())
})
return df.sort_values('centrality', ascending=False)
关于python - 在 Networkx Python 中寻找最高的中心性度量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58388820/