无法使用来自networkx的from_pandas_dataframe创建有向图

use*_*526 8 python graph networkx network-analysis

我正在学习networkx库并使用twitter转发有向图数据.我首先将数据集读入pandas df(列是'from','to','weight'),并希望使用下面的代码将前300行(转推)放入图形中:

tw_small = nx.from_pandas_dataframe(edges_df[:300],source='from',
                                   target='to',edge_attr=True)
Run Code Online (Sandbox Code Playgroud)

我认为它正确地创建了一个图形,但是当我运行时tw_small.is_directed(),它表示False(无向图)并且我绘制了一个图形,nx.draw()但它也没有显示方向.

有人可以帮我找到制作有向图的正确方法吗?

谢谢.

Ari*_*ric 13

添加可选关键字参数create_using = nx.DiGraph(),

tw_small = nx.from_pandas_dataframe(edges_df[:300],source='from',
                                   target='to',edge_attr=True,
                                   create_using=nx.DiGraph())
Run Code Online (Sandbox Code Playgroud)

  • @OfekGlick,不确定您是否仍在寻找这个,但您会使用`from_pandas_edgelist`,所以它将是`G = nx.from_pandas_edgelist(edges_df, source='from', target='to', edge_attr=True , create_using=nx.DiGraph())`(这是 Hamdi Tarek 下面的另一个解决方案所说的)。 (3认同)

小智 6

您可以编写edgelist而不是数据框,它对我有用,当我使用from_pandas_dataframe : "AttributeError: module 'networkx' has no attribute 'from_pandas_dataframe

解决方案 :

Graph = nx.from_pandas_edgelist(df,source='source',target='destination', edge_attr=None, create_using=nx.DiGraph())
Run Code Online (Sandbox Code Playgroud)

您可以测试您的图形是否有向或不使用:nx.is_directed(Graph)。你会得到真实的。