python-3.x - 如何将数据框中的每一行转换为具有属性的节点?

标签 python-3.x pandas networkx

给定一个样本数据框df:

import pandas as pd

df = pd.DataFrame({
    'id': [1, 2, 3, 4, 5],
    'a': [55, 2123, -19.3, 9, -8], 
    'b': ['aa', 'bb', 'ad', 'kuku', 'lulu']
})

现在我想将这些数据“上传”到图表中。每行都应该是一个具有 idab 属性的节点。

我尝试使用 from_pandas_dataframe NetworkX 方法来做到这一点。

请告知 NetworkX 中哪个函数负责执行此操作?

最佳答案

from_pandas_edgelist函数需要源和目标

from networkx import nx
G = nx.from_pandas_edgelist(df, source='id', target='col_target')

您可以使用循环来生成图表:

from networkx import nx
G = nx.Graph()

for i, attr in df.set_index('id').iterrows():
    G.add_node(i, **attr.to_dict())

或者,对于 from_pandas_edgelist,如果您真的只想要节点,您可能想要添加一个虚拟目标:

G = nx.from_pandas_edgelist(df.assign(target='none'),
                            source='id', target='target',
                            edge_attr=['a', 'b'])

enter image description here

然后删除虚拟节点:

G.remove_node('none')

enter image description here

关于python-3.x - 如何将数据框中的每一行转换为具有属性的节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71221758/

相关文章:

python-2.7 - Networkx 无法找到某些软件包(版本 1.10)

linux - libtorrent 在 Python 3 中工作吗?

python - 在 pandas 中创建多列且多行共享同一键的简单方法

Python:TypeError:dtype=datetime64[ns] 和日期之间的比较无效

python - 为最短路径提供与图中其余路径不同的颜色

python - 获取 key 中的第二项

python - setup.py 不为 install_requires 开发使用 wheel 吗?

c++ - 如何将字符串从 Python3 传递给 cythonized C++ 函数

Python lstat 给出的值与系统 stat 不同

python - Pandas 计算分组数据帧中连续相等值的长度