【问题标题】:Construct anytree from pandas DataFrame with multiple parents从具有多个父级的 pandas DataFrame 构造任何树
【发布时间】:2022-11-07 23:57:26
【问题描述】:

我有一个巨大的数据框。这只是一个例子。但是你可以看到“b”元素有“a”、“d”、“k”个父元素。

data = pd.DataFrame(columns=["Parent","Child"], data=[["a","b"],["a","d"],["d","v"],["d","b"],["c","f"],["b","n"],["s","c"],["k","b"],["n","k"]])

Read data from a pandas DataFrame and create a tree using anytree in python

在此解决方案中,树正在构建,但父级覆盖。

如何构建多父树? P.S 也许我的阵列不好。

【问题讨论】:

    标签: python pandas anytree


    【解决方案1】:

    因为 anytree 是一个纯树库,它只支持每个节点有一个父节点。

    如果您想将多个父节点分配给一个节点,您正在查看一个有向图。 要在 Python 中处理此类图表,请尝试 networkx

    【讨论】:

      【解决方案2】:

      bigtree 是一个 Python 树和 DAG 实现,集成了 Python 列表、字典和 pandas DataFrame。

      对于这种情况,有一个内置的 dataframe_to_dag 方法可以为您执行此操作。

      import pandas as pd
      from bigtree import dataframe_to_dag, dag_to_dot
      
      # I removed ["n", "k"] as it resulted in a cyclic graph
      # I removed ["c","f"] and ["s","c"] as it is not linked to the DAG
      data = pd.DataFrame(columns=["Parent","Child"], data=[["a","b"],["a","d"],["d","v"],["d","b"],["b","n"],["k","b"]])
      
      dag = dataframe_to_dag(data, parent_col="Parent", child_col="Child")
      
      graph = dag_to_dot(dag, node_colour="gold")
      graph.write_png("dag.png")
      

      资料来源:bigtree 的创建者;)

      【讨论】:

        猜你喜欢
        • 2017-02-10
        • 2015-12-20
        • 1970-01-01
        • 2023-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多