如何将pandas dataframe属性添加到GML加载的NetworkX网络节点中
操作步骤
你可以通过将DataFrame转为用户与CLASSE的映射字典,再遍历NetworkX节点匹配赋值的方式实现需求,完整可运行代码如下:
import networkx as nx import pandas as pd # 1. 读取GML文件 G = nx.read_gml('你的输入GML文件路径.gml') # 2. 生成USER到CLASSE的映射字典(先去重避免重复数据干扰) df = pd.DataFrame({ 'USER': [ '5B5F2C071D12AF13219DF5EBE05132AF', '9FB3B96B6D5E16C9DD564AA3E84F1954', 'B3299B0E587D7275E3E4D530E9EECF50', '6432F1DF21BA38368D9A165C739EEBB3', '85D5C50A6D882CA8E4BB00BCA3574417', '85D5C50A6D882CA8E4BB00BCA3574417' ], 'CLASSE': [3,3,2,2,1,1] }) classe_map = df.drop_duplicates(subset='USER').set_index('USER')['CLASSE'].to_dict() # 3. 遍历节点匹配赋值CLASSE属性 for node_id, node_attrs in G.nodes(data=True): user_label = node_attrs['label'] # 匹配到则赋值,未匹配到可以自行修改默认值 G.nodes[node_id]['CLASSE'] = classe_map.get(user_label, 0) # 4. 导出新增CLASSE字段后的GML文件 nx.write_gml(G, '输出的GML文件路径.gml')
验证结果
你可以通过以下代码验证导出的文件是否符合要求:
G_check = nx.read_gml('输出的GML文件路径.gml') print(list(G_check.nodes(data=True)))
输出的节点属性中会包含CLASSE字段,和你要求的格式完全一致。
内容的提问来源于stack exchange,提问作者Costa.Gustavo
相关产品推荐
相关产品推荐

