Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import json
- from typing import List
- import pandas as pd
- class People():
- def __init__(self, js_data, label_prefix:List=None):
- self.id = js_data['id']
- if label_prefix == None:
- self.label = [js_data['label']]
- else:
- self.label = label_prefix + [js_data['label']]
- self.child = [People(child_js, self.label) for child_js in js_data['child']]
- def get_label_i(self, i:int):
- if i >= len(self.label):
- return ''
- else:
- return self.label[i]
- def get_all_instance(p:People):
- result = []
- result.append(p)
- for child in p.child:
- result += get_all_instance(child)
- return result
- str_json = '{"id":"S0","label":"部门","child":[{"id":"S1","label":"管理层","child":[]},{"id":"S2","label":"人力资源部","child":[{"id":"S21","label":"招聘组","child":[{"id":"S210","label":"上海组","child":[{"id":"S2101","label":"上海其他","child":[]},{"id":"S2102","label":"陆家嘴","child":[]}]},{"id":"S211","label":"深圳组","child":[]},{"id":"S212","label":"北京组","child":[]}]},{"id":"S22","label":"考核组","child":[]},{"id":"S23","label":"制度组","child":[]}]},{"id":"S3","label":"行政管理部","child":[{"id":"S31","label":"后勤组","child":[]},{"id":"S31","label":"食堂组","child":[]}]},{"id":"S4","label":"信息技术部","child":[{"id":"S41","label":"运行部","child":[{"id":"S411","label":"运维组","child":[]}]}]}]}'
- js = json.loads(str_json)
- root_instance = People(js)
- all_instance = get_all_instance(root_instance)
- df = pd.DataFrame()
- df['id'] = [i.id for i in all_instance]
- max_depth_people = max(all_instance, key=lambda x: len(x.label))
- label_depth = len(max_depth_people.label)
- for label_num in range(label_depth):
- df[f"label{label_num}"] = [i.get_label_i(label_num) for i in all_instance]
- print(df)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement