未知高度的Python树

时间:2018-01-11 11:36:43

标签: python pandas tree anytree

假设我有两列:

  OP_CODE      Additional Work
   a                 b
   a                 c
   a                 
   b                 d
   b                 e
   c                 
   d                 f
   d                 g
   d              
   e 
   f
   g

我需要做的是,我必须从OP_Code列获取一个值,并使用Additional Work获取所有相应的值。现在,其他工作列值是我的新OP_Codes。然后再次搜索其相应的附加作品。此过程一直持续到我遇到该特定列的空白单元格为止。 上表的输出如下所示: https://i.stack.imgur.com/SycQM.png 问题是我们不知道一棵树可以进行多少分支。 以下是我的代码示例:

from anytree import Node, RenderTree
udo = Node("019201")


x = df_asra[df_asra.op_code == udo.name]


First_Level = {}
for i in range(0,len(x)):
    First_Level[i] = Node(x['Additional Work'].iloc[i], parent=udo)
for j in range(0,len(First_Level)):
    y = df_asra[df_asra['op_code'] == (First_Level[j]).name]
Second_Level = {}


while(y['Additional Work'].empty == False):


     for k in range(0,len(y)):
         Second_Level[k] = Node(y['Additional Work'].iloc[k], parent = First_Level[j])

     for l in range(0,len(Second_Level)):
         z = df_asra[df_asra['op_code'] == (Second_Level[l]).name]

     y = z
     First_Level = Second_Level





for pre, fill, node in RenderTree(udo):
     print("%s%s" % (pre, node.name))

现在我得到这样的输出:

019201
├── 037061
│   ├── 015765
│   ├── 015795
│   │   ├── 013032
│   │   ├── 014270
│   │   ├── 015768
│   │   │   └── nan
│   │   └── nan
│   ├── nan
│   ├── nan
│   ├── nan
│   └── nan
├── nan
└── nan

Nan是空白列 现在我的问题是所有分支都没有输出。例如,014270具有更多分支。它只适用于某些部分。 Plz帮助

0 个答案:

没有答案