【发布时间】:2022-11-08 09:16:56
【问题描述】:
我有一个数据框
grpdata = {'Group1':['A', 'A', 'A', 'B','B'],
'Group2':['A2','B2','B2','A2','B2'],
'Group3':['A3', 'A3', 'B3','A3', 'A3'],
'Count':['10', '12', '14', '20']}
# Convert the dictionary into DataFrame
groupdf = pd.DataFrame(grpdata)
我想将此数据帧转换为一棵树,其中每一行都是从根节点到叶节点的路径。
我尝试使用中显示的方法 Read data from a pandas dataframe and create a dataframe using anytree in python
def add_nodes(nodes, parent, child):
if parent not in nodes:
nodes[parent] = Node(parent)
if child not in nodes:
nodes[child] = Node(child)
nodes[child].parent = nodes[parent]
nodes = {}
for parent, child in zip(groupdf["Group1"],groupdf["Group2"]):
add_nodes(nodes, parent, child)
但是,我无法弄清楚如何在上面定义的相同节点结构中将 Group3 作为子节点添加到 Group2 作为父节点。
还
roots = list(groupdf[~groupdf["Group1"].isin(groupdf["Group2"])]["Group1"].unique())
for root in roots:
for pre, _, node in RenderTree(nodes[root]):
print("%s%s" % (pre, node.name))
如何将后续列“Group3”和“Count 添加到此树结构中?
【问题讨论】: