Python 在for循环中构建不同的networkx图
我有一个大熊猫数据帧,我必须从中提取几个网络,每次都考虑数据帧的一个子集。这些图将是二部图,因此将有两组节点(数据集中的两列),即节点x和节点y。我想在循环中构建图形,而不是手动创建。如何递归地为每个图形指定一个名称 要解释的代码:Python 在for循环中构建不同的networkx图,python,pandas,for-loop,networkx,Python,Pandas,For Loop,Networkx,我有一个大熊猫数据帧,我必须从中提取几个网络,每次都考虑数据帧的一个子集。这些图将是二部图,因此将有两组节点(数据集中的两列),即节点x和节点y。我想在循环中构建图形,而不是手动创建。如何递归地为每个图形指定一个名称 要解释的代码: import pandas as pd import networkx as nx df=pd.read_csv('my_dataframe') sub_list=df.nodes_y.unique() for item in sub_list: su
import pandas as pd
import networkx as nx
df=pd.read_csv('my_dataframe')
sub_list=df.nodes_y.unique()
for item in sub_list:
sub_df=df[df['nodes_y']==item]
sG_*item*=nx.Graph() #here I'd like to assign a name to the network
#recursively based on the subset of the dataframe
sG_*item*.add_nodes_from(sub_df['nodes_x'])
sG_*item*.add_nodes_from(sub_df['nodes_y'])
##rest of the code
最重要的是,这是一种可行和可取的操作方式吗?我的问题有更好的解决方案吗?让我们尝试使用字典而不是新变量:
import pandas as pd
import networkx as nx
df=pd.read_csv('my_dataframe')
sub_list=df.nodes_y.unique()
sg_dict = {}
for item in sub_list:
sub_df=df[df['nodes_y']==item]
sG_dict[item]=nx.Graph() #here I'd like to assign a name to the network
#recursively based on the subset of the dataframe
sG_dict[item].add_nodes_from(sub_df['nodes_x'])
sG_dict[item].add_nodes_from(sub_df['nodes_y'])
##rest of the code
使用字典代替新的变量名。简单易懂。谢谢:)进一步的问题:如果我对
子列表的一个项目手动执行此操作,然后检查此对象是否等于相应的字典项目,我会得到一个False
。这正常吗?我会解释清楚的。如果我在我的问题中为子列表
的单个项
(我们称之为X)编写的for循环中执行操作,我会得到一个图。这个图应该等于sG_dict[X],对吗?好吧,所以我不明白当我等于两个对象shrm时为什么会得到一个False
。。。你的比较语句是什么样子的?然后,你创建了一个新的问题,一些样本数据显示了这一点?