从python数据帧的列构造二部图

从python数据帧的列构造二部图,python,graph,dataframe,networkx,Python,Graph,Dataframe,Networkx,我有一个三列的数据框 data['subdomain'], data['domain'], data ['IP'] 我想为每个子域的元素建立一个二部图 对应于同一个域,且权重为其 对应 例如,我的数据可以是: subdomain , domain, IP test1, example.org, 10.20.30.40 something, site.com, 30.50.70.90 test2, example.org, 10.20.30.41 test3, example.org, 10.

我有一个三列的数据框

data['subdomain'],  data['domain'], data ['IP']
我想为每个子域的元素建立一个二部图 对应于同一个域,且权重为其 对应

例如,我的数据可以是:

subdomain , domain, IP
test1, example.org, 10.20.30.40
something, site.com, 30.50.70.90
test2, example.org, 10.20.30.41
test3, example.org, 10.20.30.42
else, website.com, 90.80.70.10
我想要一个二分图,说明
example.org
的权重为3 3个边缘等,我想把这些结果组合成一个新的 数据帧

我一直在尝试使用networkX,但我没有经验,尤其是在需要计算边时

B=nx.Graph()
B.add_nodes_from(data['subdomain'],bipartite=0)
B.add_nodes_from(data['domain'],bipartite=1)
B.add_edges_from (...)
你可以用

B.add_weighted_edges_from(
    [(row['domain'], row['subdomain'], 1) for idx, row in df.iterrows()], 
    weight='weight')
B.add_edges_from(
    [(row['domain'], row['subdomain']) for idx, row in df.iterrows()])
添加加权边,或者可以使用

B.add_weighted_edges_from(
    [(row['domain'], row['subdomain'], 1) for idx, row in df.iterrows()], 
    weight='weight')
B.add_edges_from(
    [(row['domain'], row['subdomain']) for idx, row in df.iterrows()])
添加没有权重的边

您可能不需要权重,因为节点阶数是相邻边的数目 到那个节点。比如说,

>>> B.degree('example.org')
3

屈服



是的,但通过这种方式,我们将权重定义为1。。。我想计算一下“example.org”被查询了多少次,然后给它3的权重,作为示例的边。org@lolkos对于图中的权重表示什么,您可能有错误的想法。它们表示两个节点之间的连接强度。如果您想知道节点上的连接数,只需找到该节点的阶数,还可以轻松找到它与哪些节点共享其边。我希望这有帮助:)