所以我有一个数据帧,我试图用networkx把它放到一个图形中。数据帧示例如下:
Alabama Alabama 0
Alabama Alaska 0
Alabama Arizona 0
Alabama Arkansas 1
Alabama California 1
Alabama Colorado 1
Alabama Connecticut 0
Alabama Delaware 0
我正在尝试设置它,以便0和1是同一列中相应节点之间的边。所以节点阿拉巴马阿拉巴马会有一个0的自循环,等等。我试过了
graph = nx.Graph()
graph.add_edges_from([test3])
但它给了我一个错误:dtype:int64必须是2元组或3元组。在
考虑到可能需要更改此数据帧,我应该如何创建此图。在
注:这个数据帧有2601个边,在美国所有州。在
我不太明白你说的0的边或循环是什么意思。我想你的意思是0表示没有边,1表示有边。在
命令
graph.add_edges_from([test3])
需要一个边列表作为其输入(类似于[(1,2), (2,3), (1,5)]
)。您将给它一个唯一的条目是test3
的列表。在Networkx有一个内置函数,用于从pandas数据帧中读入
from_pandas_dataframe(df, source, target, edge_attr=None, create_using=None)
。在但是,它期望每一行都是一条边(如果您只想为这些边指定一个0或1的属性,那么就设置了)。选中the documentation。在
如果您的意思是0被解释为没有边,那么您需要在调用此函数之前去掉这些条目。否则,您可以查看the source code,并且几乎可以遵循它,除了在
add_edge
命令之前添加一个值是0还是1的测试。在我相信以下方法是可行的(其中
df
是数据帧,source
是一个状态列的名称,target
是另一个状态列的名称,value
是0/1列的名称:相关问题 更多 >
编程相关推荐