【问题标题】:Build networkx directed graph or flow chart from more than one column of pandas dataframe从多列 pandas 数据框构建 networkx 有向图或流程图
【发布时间】:2019-04-22 16:40:15
【问题描述】:

我有一个由 10 列组成的 pandas 数据框。

  • 每一行包含一个用户在线执行的步骤。总共有 10 列,所以所有 10 步过程
  • 让我们说第一个活动是预订机票,所以步骤是 登录网站-->give src dest time-->选座-->pay--review

所以每一步都会发生各种排列,我想从所有数据集中绘制一个有向图。

目前networkx只支持2列

# libraries
import pandas as pd
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt

# Build your graph
G=nx.from_pandas_dataframe(df, 'src', 'dest',create_using=nx.DiGraph())

# Plot it
nx.draw(G, with_labels=True)
plt.show()

谁能告诉我如何为多于两列的有向图 d 它

【问题讨论】:

    标签: python pandas dataframe networkx directed-graph


    【解决方案1】:

    networkx from_pandas_dataframe 使用add_edges_from,你可以做类似的事情:

    # libraries
    import pandas as pd
    import numpy as np
    import networkx as nx
    import matplotlib.pyplot as plt
    
    # Build your graph
    
    df = pd.DataFrame(np.random.randn(2,4),columns=list('ABCD')) #Create a 4 column data frame
    
    columns = list(df.columns.values)# Get columns name
    
    g = nx.empty_graph(0, nx.DiGraph()) #initialize an empty graph
    
    for i in range(len(columns)-1):
        g.add_edges_from(zip(df[columns[i]], df[columns[i+1]])) #Create edge between 2 values, between all consecutive coumns
    
    # Plot it
    nx.draw(g, with_labels=True)
    plt.show()
    

    结果:

    【讨论】:

    • 惊人的答案!反正有没有以类似的方式连接不同的行?例如,如果一行的一列中的值与另一行中相同(或另一)列的值匹配,那么将两行链接在一起,使用某一列作为标签?谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 2021-08-17
    • 2020-05-06
    • 2020-08-02
    • 2016-05-17
    相关资源
    最近更新 更多