首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试创建AnyTree树时出现错误"Parent node xxx is not type 'NodeMixin'“

尝试创建AnyTree树时出现错误"Parent node xxx is not type 'NodeMixin'“
EN

Stack Overflow用户
提问于 2020-07-03 05:15:37
回答 2查看 881关注 0票数 1

关于StackOverflow的第一个问题。我找不到这个问题的其他例子,这让我相信我做错了什么。

我正在尝试从物料清单(BOM)数据创建树。首先,我只尝试设置基本的parent>child节点。

代码语言:javascript
运行
复制
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

基本上,在迭代期间,我尝试创建父节点(这不会抛出错误),然后使用先前创建的节点作为其父节点来创建一个子节点。但是,我不断地收到这样的错误:

代码语言:javascript
运行
复制
anytree.node.exceptions.TreeError: Parent node 'Product1' is not of type 'NodeMixin'.

这是rendertree(Root)的结果:

代码语言:javascript
运行
复制
print(RenderTree(root))
Node('/root')
└── Node('/root/322601101')

以下是我正在阅读的csv的简化版本:

Sample csv structure

任何帮助都是非常感谢的!

EN

回答 2

Stack Overflow用户

发布于 2020-07-03 05:25:05

从这个Github Issue看,您似乎需要在根节点中显式地设置parent=None。而且AnyNode似乎也期望**kwargs。(我还没有读过文档,所以我不能同意)因此,您还应该修改您的pitemcitem

票数 0
EN

Stack Overflow用户

发布于 2020-10-09 07:16:24

下面这行看起来不错:

其中node.name: strnode.parent: Node

代码语言:javascript
运行
复制
nodes[pitem] = Node(pitem,parent=root) # create child node

这个不是:

代码语言:javascript
运行
复制
nodes[citem] = Node(citem,parent=pitem)

此处为node.name: str而不是node.parent: str,并且应为Node类型

另外设置node.parent = None或不设置完全相同。与**kwargs类似,它只是可以为节点设置的附加属性,与您面临的错误没有任何关系。

实际上您需要首先声明根节点,但是您正在这样做,错误并不是因为该

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62705151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档