[英]Getting an error “Parent node xxx is not of type 'NodeMixin'” when attempting to create AnyTree tree
StackOverflow 上的第一个问题。 无法找到此问题的其他实例,这使我相信我做错了什么。
我正在尝试根据物料清单 (BOM) 数据创建一棵树。 首先,我只是想设置基本的父>子节点。
from anytree import Node, RenderTree, find_by_attr, NodeMixin
import pandas as pd
# Create Dataframe from csv file
df1 = pd.read_csv(r'filepath') # filepath only used for example
nodes = {} # Store created nodes
root = Node('root') # Setup root node
# Iterate over df and create parent/child nodes
for index, row in df1.iterrows():
pitem = row['EBPART'].strip() # get parent item number
citem = row['EBCOMP'].strip() # get child item number
nodes[pitem] = Node(pitem,parent=root) # create child node
nodes[citem] = Node(citem,parent=pitem) # create parent node
基本上在迭代期间,我尝试创建父节点(不会引发错误),然后使用先前创建的节点作为父节点创建子节点。 但是,我不断收到此错误:
anytree.node.exceptions.TreeError: Parent node 'Product1' is not of type 'NodeMixin'.
这是渲染树(根)的结果:
print(RenderTree(root))
Node('/root')
└── Node('/root/322601101')
这是我正在阅读的 csv 的简化版本:
任何帮助是极大的赞赏!
从这个Github 问题看来,您需要在根节点中显式设置parent=None
。 而且似乎AnyNode
期望 **kwargs。 (我没有阅读文档,所以我不能同意)因此您还应该修改您的pitem
和citem
。
以下行看起来不错:
其中node.name: str
和node.parent: Node
nodes[pitem] = Node(pitem,parent=root) # create child node
这个不是:
nodes[citem] = Node(citem,parent=pitem)
这里node.name: str
但node.parent: str
,并且应该是Node
类型
另外设置node.parent = None
或不完全相同。 **kwargs
也是如此,它只是您可以为节点设置的附加属性,与您面临的错误无关。
实际上,您需要先声明根节点,但是您正在这样做,错误不是因为那个
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.