【pandas】Python将dataframe转化成tree树形结构

将dataframe转化为tree结构,代码是django代码.转换成普通python代码就是不要request和JSONREsponse即可
ROOT_NODE_PARENT_ID 是最上层的根节点.

def resource_data_tree(request):
    res = []
    resource_data_sql = "select * from resource_data_tree where is_active=1"
    resource_data_df = download_data_from_db(resource_data_sql)
    # TODO:将resource_data_tree缓存进redis
    tree_df = resource_data_df[resource_data_df['parent_node_id'] == ROOT_NODE_PARENT_ID]
    if not tree_df<
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要将 DataFrame 数据转换为树状结构,你可以使用递归或循环来构建树的节点,并将节点链接起来。下面是一个示例,演示如何将 DataFrame 转换为树状结构: ```python import pandas as pd # 创建一个示例 DataFrame data = {'id': [1, 2, 3, 4, 5, 6], 'name': ['root', 'child1', 'child2', 'grandchild1', 'grandchild2', 'grandchild3'], 'parent_id': [None, 1, 1, 2, 2, 3]} df = pd.DataFrame(data) # 创建树节点类 class TreeNode: def __init__(self, id, name): self.id = id self.name = name self.children = [] # 创建树函数 def create_tree(df, parent_id=None): tree = [] for index, row in df.iterrows(): if row['parent_id'] == parent_id: node = TreeNode(row['id'], row['name']) children = create_tree(df, parent_id=row['id']) node.children.extend(children) tree.append(node) return tree # 将 DataFrame 转换为树 tree = create_tree(df) # 打印树结构 def print_tree(node, level=0): indent = ' ' * level print(f'{indent}id: {node.id}, name: {node.name}') for child in node.children: print_tree(child, level + 1) for node in tree: print_tree(node) ``` 在这个示例中,首先定义了一个 TreeNode 类,用于表示树的节点。然后,创建了一个 create_tree 函数,用于递归地构建树结构。该函数根据 DataFrame 中的 parent_id 列找到每个节点的子节点,并将它们链接到父节点的 children 列表中。 最后,使用 print_tree 函数打印树结构。这个函数使用递归方式遍历树,并按层级缩进输出节点的 id 和 name 属性。 你可以根据实际情况修改代码,以适应你的 DataFrame 结构和数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值