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

如何使用Pandas实现数据集的多层级下钻分组统计功能?

Pandas实现多级下钻分组统计方案

可以通过Pandas实现该需求,相比自定义递归循环,Pandas内置的分组能力在处理大量数据时效率更高,且代码更易维护。

完整实现代码

1. 依赖导入与数据准备

import pandas as pd

# 构造示例数据集,实际使用时可通过pd.read_csv等接口读取真实数据
data = [
    ["Donald", "Trump", "England", "London", "Blackheath"],
    ["Bill", "Gates", "England", "London", "Archway"],
    ["Donald", "Duck", "England", "York", "BadgerHill"],
    ["Donald", "Duck", "Germany", "Berlin", "Friedrichshain"]
]
df = pd.DataFrame(data, columns=["FirstName", "LastName", "Country", "City", "Neighborhood"])

# 筛选配置(修正了原配置中LastName缺右引号的笔误)
FILTERS = [
    {'key': 'address', 'labels': ['Country', 'City', 'Neighborhood']},
    {'key': 'name', 'labels': ['FirstName', 'LastName']},
]

2. 嵌套结构生成函数

def build_nested_group(df, level_labels, current_level=0):
    # 处理到最后一层时,直接返回当前层级各值的统计结果
    if current_level == len(level_labels) - 1:
        count_series = df.groupby(level_labels[current_level], sort=False).size()
        return [{"value": k, "count": int(v)} for k, v in count_series.items()]
    # 非最后一层:统计当前层级计数 + 递归生成子层级结构
    current_col = level_labels[current_level]
    groups = df.groupby(current_col, sort=False)
    res = []
    for group_val, group_df in groups:
        res.append({
            "value": group_val,
            "count": len(group_df),
            "items": build_nested_group(group_df, level_labels, current_level + 1)
        })
    return res

3. 生成最终结果

final_result = {}
for conf in FILTERS:
    final_result[conf["key"]] = build_nested_group(df, conf["labels"])

结果说明

执行上述代码后输出的final_result与你给出的预期结构完全一致,可直接传给前端用于下钻筛选器渲染。该实现支持任意层级的自定义分组配置,仅需调整FILTERS中的labels即可适配不同的下钻需求,无需修改核心逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 23:09:04