Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在for循环中构建不同的networkx图_Python_Pandas_For Loop_Networkx - Fatal编程技术网

Python 在for循环中构建不同的networkx图

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

我有一个大熊猫数据帧,我必须从中提取几个网络,每次都考虑数据帧的一个子集。这些图将是二部图,因此将有两组节点(数据集中的两列),即节点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:
    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
。。。你的比较语句是什么样子的?然后,你创建了一个新的问题,一些样本数据显示了这一点?