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

Python中如何为pivot_ui自定义聚合器 适配Jupyter及Streamlit环境

可以实现,以下是两种常用场景的具体实现方案:

Jupyter Notebook 实现方案

pivottablejs的pivot_ui方法原生支持传入字符串格式的JavaScript对象作为aggregators参数,无需单独预定义JS函数。你可以直接将自定义聚合逻辑拼接为JS字符串传入,内部字段映射、计算逻辑对用户完全隐藏,仅暴露你定义的聚合器名称:

from pivottablejs import pivot_ui
import pandas as pd

# 构造自定义聚合器的JS字符串
custom_aggregators = """
{
    "加权平均售价": function() {
        const tpl = $.pivotUtilities.aggregatorTemplates;
        // 内部字段映射、计算逻辑用户不可见,仅暴露外层标签
        return tpl.weightedAverage()(["商品售价", "销售数量"]);
    },
    "月均订单量": function() {
        const tpl = $.pivotUtilities.aggregatorTemplates;
        return tpl.average()(["订单数"]);
    }
}
"""

# 直接传入aggregators参数即可
pivot_ui(df, rows=["商品品类"], cols=["销售区域"], aggregators=custom_aggregators)

如果你偏好提前在%%javascript单元格定义,可将聚合器对象挂载到window全局对象上,再在Python调用时直接传入全局变量名即可,不过直接拼接字符串的方式更简洁。

Streamlit 实现方案

Streamlit环境下可通过components.v1.html直接注入完整的PivotTable渲染代码,灵活性更高,无需依赖pivottablejs包:

import streamlit as st
import streamlit.components.v1 as components
import pandas as pd
import json

# 示例数据
df = pd.read_csv("你的数据文件.csv")

# 转换为前端可识别的格式
df_values = df.to_json(orient='values')
col_names = json.dumps(df.columns.tolist())

# 注入完整渲染代码
components.html(f"""
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/pivottable@2.23.0/dist/pivot.min.css">
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/pivottable@2.23.0/dist/pivot.min.js"></script>

<div id="pivot-container"></div>
<script>
$(function() {{
    const tpl = $.pivotUtilities.aggregatorTemplates;
    const data = {df_values};
    data.unshift({col_names});
    
    $("#pivot-container").pivotUI(data, {{
        rows: ["商品品类"],
        cols: ["销售区域"],
        aggregators: {{
            "加权平均售价": function() {{ return tpl.weightedAverage()(["商品售价", "销售数量"]); }},
            "月均订单量": function() {{ return tpl.average()(["订单数"]); }}
        }}
    }});
}});
</script>
""", height=600)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:45:02