简体   繁体   中英

Visualize each row of pandas data frame as a tree

I have a data frame having 4 columns A, B, C, D. I need to visualize/ print each row of my data frame as a tree structure.

Example:

df['A'] = franchisee

df['B'] = sign off

df['C'] = status

df['D'] = registration

Then, I need to visualize this row as a tree where franchisee is the parent node of sign off, sign off is the parent node of status and child node of franchisee, status is the parent node of registration and child node of sign off, registration is the child node of status. How can I do that? I have tried using the anytree library:

from anytree import Node, RenderTree, NodeMixin
import pandas as pd

df = pd.read_csv('file_location')
for i, j, k, l in zip(df['A'], df['B'], df['C'], df['D']):
    mdept = Node(a)
    dept = Node(b, parent = a)
    qtype = Node(c, parent = b)
    sqtype = Node(d, parent = c)

but it shows the following error:

Exception has occured:TreeError

Parent node 'franchisee' is not of type 'NodeMixin'.

I didn't know this library, so I can't ensure there is not a better way, but iterating trough the rows and columns and using a root node:

from anytree import Node
root = Node('root')
for _, row in df.iterrows():
    n = Node(row['A'], parent=root)
    for c in ['B', 'C', 'D']:
        n = Node(row[c], parent=n) # n is always the previous node

# export as dot graph
from anytree.exporter import DotExporter
DotExporter(root).to_picture('graph.png')

output:

在此处输入图像描述

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM