如何将数据框中的每一行转换为具有属性的节点?
How to convert each row in data frame to a node with attributes?
给定一个样本数据框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']
})
现在我想将此数据“上传”到图表中。每行应该是一个具有 id
、a
和 b
属性的节点。
我已经尝试用 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'])
然后删除虚拟节点:
G.remove_node('none')
给定一个样本数据框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']
})
现在我想将此数据“上传”到图表中。每行应该是一个具有 id
、a
和 b
属性的节点。
我已经尝试用 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'])
然后删除虚拟节点:
G.remove_node('none')