从节点属性向Dataframe添加标签

时间:2019-09-05 15:45:19

标签: python-3.x pandas networkx

我正在尝试用熊猫创建一个数据框,以显示说唱歌手网络内部的不同中心度度量。我试图在保持索引不变的情况下将其名称添加到数据框,以便可以通过数字和名称查找它们。我无法将名称添加到单独的列中。

我正在使用python3,networkx和pandas。由于我对编程非常陌生,因此所有尝试均导致编译错误。到目前为止,这是我尝试过的:

这是我缩短的数据框。 “ G”是一个图对象,已为其分配数据的节点和边。

rapper_df = pd.DataFrame({'Name': dict(name),  
                          'Degree': dict(nx.degree(G))})

这是我尝试将标签添加到单独的字典中以添加到df中的操作。

name_undict = nx.get_node_attributes(G, 'label')
name = []
name.append(name_undict)

字典看起来像这样:https://i.imgur.com/A2YhqYH.png

我希望有一个带有索引,2列(“名称”和“学位”)以及行内相应数据的数据帧(例如:1-Snoop Dogg-4),但是我在第1行得到了编译错误代码的rapper_df部分。

  

ValueError:字典更新序列元素#0的长度为5214;需要2个

由于我对此很陌生,所以我机智的程度或多或少。感谢您抽出宝贵的时间来回答。

最好的问候, 兰加

1 个答案:

答案 0 :(得分:-1)

您可能需要以下内容:

attr_dict = nx.get_node_attributes(G, 'label')
deg_dict = dict(nx.degree(G))

combined = [(name, deg) for (name, deg) in zip(attr_dict.values(),
            deg_dict.values()) if attr_dict.keys() == deg_dict.keys()]
rapper_df = pd.DataFrame({'Name': [name[0] for name in combined],  
                          'Degree': [deg[1] for deg in combined]})