【问题标题】:AttributeError: module 'networkx' has no attribute 'from_pandas_dataframe'AttributeError:模块“networkx”没有属性“from_pandas_dataframe”
【发布时间】:2018-08-19 18:06:39
【问题描述】:

我有networkx v. 2.1。为了使其与 pandas 数据框一起工作,我尝试了以下操作:

  • 通过pip3 安装,这不起作用生成Atrribute Error,如标题,因此被卸载。
  • 用“python3 setup.py install”重新安装

错误描述。

AttributeError: 模块 'networkx' 没有属性 'from_pandas_dataframe`

重现错误的步骤:

我使用csv 导入数据。我这样做是因为我只想从数据集中读取 5000 行。

x=pd.DataFrame([x for x in rawData[:5000]])

x[:10] 

0   1   2
0   228055  231908  1
1   228056  228899  1
2   228050  230029  1
3   228059  230564  1
4   228059  230548  1
5   70175   70227   1
6   89370   236886  1
7   89371   247658  1
8   89371   249558  1
9   89371   175997  1

g_data=G=nx.from_pandas_dataframe(x)

module 'networkx' has no attribute 'from_pandas_dataframe'

我知道我错过了from_pandas_dataframe,但找不到安装它的方法。

[m for m in nx.__dir__() if 'pandas' in m] 

['from_pandas_adjacency',
 'to_pandas_adjacency',
 'from_pandas_edgelist',
 'to_pandas_edgelist']

【问题讨论】:

    标签: pandas networkx


    【解决方案1】:

    在networkx 2.0 from_pandas_dataframe has been removed.

    您可以改为使用from_pandas_edgelist

    那么你将拥有:

    g_data=G=nx.from_pandas_edgelist(x, 1, 2, edge_attr=True)
    

    【讨论】:

    • 我用的是pip install networkx但只得到了没有from_pandas_edgelist的1.11,然后我尝试了pip install --upgrade networkx,最后得到了from_pandas_edgelist
    • 无向图怎么样?
    【解决方案2】:

    一个简单的图表:

    import pandas as pd
    import numpy as np
    import networkx as nx
    import matplotlib.pyplot as plt
    
    # Build a dataframe with 4 connections
    df = pd.DataFrame({'from': \['A', 'B', 'C', 'A'\], 'to': \['D', 'A', 'E', 'C'\]})
    
    # Build your graph
    G = nx.from_pandas_edgelist(df, 'from', 'to')
    
    # Plot it
    nx.draw(G, with_labels=True)
    plt.show()
    

    【讨论】:

      【解决方案3】:

      这个solution 也有帮助:

      G = nx.DiGraph()
      G.add_weighted_edges_from([tuple(x) for x in x.values])
      nx.info(G)
      
      
      'Name: \nType: DiGraph\nNumber of nodes: 5713\nNumber of edges: 5000\nAverage in degree:   0.8752\nAverage out degree:   0.8752'
      

      【讨论】:

      • 这与答案无关
      猜你喜欢
      • 1970-01-01
      • 2017-01-17
      • 2017-06-22
      • 1970-01-01
      • 2018-04-14
      • 2019-02-18
      • 1970-01-01
      • 2020-01-01
      • 2019-07-20
      相关资源
      最近更新 更多