You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python实现DataFrame层级节点的分组结构化输出?

Pandas层级节点DataFrame转换为分组结构化形式

问题描述

现有如下Pandas DataFrame,对应一个三级节点层级结构:

import pandas as pd

# 创建数据列表
data = [
    ["8582", 1, None],
    ["8586", 2, "8582"],
    ["8585", 2, "8582"],
    ["8593", 2, "8582"],
    ["8584", 2, "8582"],
    ["8590", 3, "8586"],
    ["8583", 3, "8593"],
    ["8597", 3, "8584"],
    ["8587", 3, "8585"],
    ["8674", 3, "8586"],
    ["8589", 3, "8586"],
    ["8588", 3, "8585"],
]

# 生成DataFrame
df = pd.DataFrame(data, columns=["Nod", "Levels", "Parents"])

需要将其转换为分组结构化形式:即每行包含完整的三级层级路径(Level1、Level2、Level3),清晰呈现每个Level3节点对应的所有上级节点。

解决方案

可以通过Pandas的merge方法,按层级间的父子关联关系逐步合并数据,实现目标结构:

# 筛选各层级数据并重命名列,统一关联字段
level1 = df[df['Levels'] == 1][['Nod']].rename(columns={'Nod': 'Level1'})
level2 = df[df['Levels'] == 2][['Nod', 'Parents']].rename(columns={'Nod': 'Level2', 'Parents': 'Level1'})
level3 = df[df['Levels'] == 3][['Nod', 'Parents']].rename(columns={'Nod': 'Level3', 'Parents': 'Level2'})

# 先合并Level1与Level2,得到二级层级组合
level1_level2 = pd.merge(level1, level2, on='Level1')
# 再合并Level3,生成完整三级路径
result = pd.merge(level1_level2, level3, on='Level2')

print(result)

代码说明

  1. 拆分层级数据:分别提取Level1、Level2、Level3的节点数据,将列名重命名为对应层级名称,同时把Parents列调整为上级层级的列名,确保关联字段一致;
  2. 逐步合并关联:先通过Level1字段关联一级和二级节点,再通过Level2字段关联三级节点,最终得到每行包含完整三级路径的结构化数据。

输出结果

运行代码后将得到如下结构的DataFrame:

Level1Level2Level3
858285868590
858285868674
858285868589
858285858587
858285858588
858285938583
858285848597

内容的提问来源于stack exchange,提问作者Gogo78

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 18:56:01