【问题标题】:How to build a tree in python?如何在python中构建一棵树?
【发布时间】:2020-06-08 15:02:15
【问题描述】:

在过去的几天里,我一直在研究 anytree 和 treelib 库,但我不知道如何实际构建树。我确定我缺少一些相对简单的东西。基本上,我需要建立一个组织结构图。我的数据包含两个列表:

df = {'employee_id': {0: 'XFV67DN9Z',
  1: 'LGUW9GHUL',
  2: 'ZI2ZN7GRB',
  3: '3JUJVPMOX',
  4: 'XSRDWVMRW',
  5: '9QVJI1VYI',
  6: 'K22VHQ6AG',
  7: 'KL5D81665'},
 'manager_id': {0: 0,
  1: 'XFV67DN9Z',
  2: 'XFV67DN9Z',
  3: 'XFV67DN9Z',
  4: 'ZI2ZN7GRB',
  5: 'XFV67DN9Z',
  6: 'XFV67DN9Z',
  7: 'XFV67DN9Z'}}

第一个员工是 CEO,所以他们代表根节点。我需要建立一棵可能有 1000 名员工的树。每个节点还必须包含性别、薪水等属性(也将存储在列中)。如果我可以在构建树时分配这些属性,那将是理想的。树结构的目标是能够分析有关组织层的事物。那么,例如,组织第 3 层的孩子的平均数量是多少?或者,第 9 级的平均工资是多少。我还不太确定如何进行这些计算,但我只是想构建数据结构,以便我可以进入那部分......

理想情况下,如果我可以使用一个库来使这更简单,那就太好了。我查看了anytree,但无法弄清楚如何遍历节点创建过程来创建树。 Treelib 提出了同样的问题。有什么建议吗?

【问题讨论】:

  • 使用来自networkx的dag,您的“列”将是节点的属性,而您的层次结构将是它们之间的边缘
  • @E.Serra 只是想说 networkx 最终成为完美的解决方案。感谢您的帮助!
  • 是的,从你的问题来看是这样的 :)

标签: python graph tree anytree


【解决方案1】:

最终使用了可在此处找到的 networkx 库:

https://networkx.github.io/

具体来说,from_pandas_dataframe 方法让这变得非常简单:

https://networkx.github.io/documentation/networkx-1.10/reference/generated/networkx.convert_matrix.from_pandas_dataframe.html

【讨论】:

    猜你喜欢
    • 2020-04-29
    • 2021-02-17
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    相关资源
    最近更新 更多