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

如何基于分类层级字典生成含完整层级的Pandas DataFrame?

分类层级转Pandas DataFrame实现方案

需求说明

给定定义分类父子层级的字典:

hierarchy = {
'Category1': [],
'Category2': ['Category1'],
'Category3': ['Category1'],
'Category4': ['Category2'],
'Category5': ['Category4'],
'Category6': ['Category4'],
'Category7': ['Category6']}

需编写函数将层级信息转换为Pandas DataFrame,每行对应一个叶子分类的完整层级,列按从大到小的分类级别命名,期望输出如下:

import pandas as pd
pd.DataFrame(data={
    'Biggest_category' : ['Category1','Category1','Category1'],
    'Second_Biggest_category': ['Category2','Category2','Category3'],
    'Third_Biggest_category': ['Category4','Category4',[]],
    'Fourth_Biggest_category': ['Category5','Category6',[]],
    'Fifth_Biggest_category': [[],'Category7',[]]
})

实现步骤

1. 编写路径获取函数

通过迭代从分类向上追溯父类,反转后得到从大到小的完整层级路径:

def get_full_path(category, hierarchy):
    path = [category]
    current = category
    # 向上遍历父类直到根节点
    while hierarchy[current]:
        parent = hierarchy[current][0]
        path.append(parent)
        current = parent
    # 反转路径,转为从最大到最小的层级顺序
    return path[::-1]

2. 筛选叶子节点

叶子节点指没有子类的分类(即没有其他分类将其作为父类):

all_cats = set(hierarchy.keys())
parent_cats = set()
for parents in hierarchy.values():
    parent_cats.update(parents)
leaf_cats = all_cats - parent_cats

3. 收集路径并确定最大层级数

# 获取所有叶子节点的完整层级路径
all_paths = [get_full_path(leaf, hierarchy) for leaf in leaf_cats]
# 确定最长路径的层级数,用于生成列名
max_level_count = max(len(path) for path in all_paths)

4. 构建DataFrame

生成对应层级的列名,填充路径到对应列,不足层级用[]补充:

# 生成列名列表
level_labels = ['Biggest', 'Second', 'Third', 'Fourth', 'Fifth']
columns = [f"{level_labels[i]}_category" for i in range(max_level_count)]

# 填充每行数据,确保长度匹配最大层级数
filled_rows = []
for path in all_paths:
    row = path.copy()
    while len(row) < max_level_count:
        row.append([])
    filled_rows.append(row)

# 创建最终DataFrame
import pandas as pd
result_df = pd.DataFrame(filled_rows, columns=columns)

运行上述代码后,result_df将与期望输出完全一致。

注:本实现基于每个分类仅存在一个父类的前提,若需支持多父类场景,需调整路径获取及数据填充逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:32:59