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

如何高效将Pandas DataFrame按ID和Color分组并导出为指定HTML格式?

按ID和Color分组生成自定义HTML格式的Pandas DataFrame导出方案

问题描述

我有一个结构如下的Pandas DataFrame:

idcolorvalue
1Red20
1Red25
1Blue20
1Blue15
1Green5
2Red100
2Blue20
2Blue220
2Blue120
2Blue20
2Green220
2Green120
2Green45
2Green2
2Green5

需要将其先按id分组,再按color分组,生成特定格式的HTML:

每个id对应一个<p>Id: X</p>标题,之后每个color对应一个被<div class="s-table-container">包裹的<table class="s-table">表格,表格仅包含color和value两列。

使用原生to_html()无法得到预期输出,求高效的动态生成方法。

解决方案

可以通过Pandas的双层groupby机制遍历分组,拼接自定义HTML字符串,既能保证效率,又能精准控制输出格式。

实现代码

import pandas as pd

# 构造样本DataFrame(实际使用时可替换为你的数据源)
data = [
    [1, 'Red', 20], [1, 'Red', 25], [1, 'Blue', 20], [1, 'Blue', 15], [1, 'Green', 5],
    [2, 'Red', 100], [2, 'Blue', 20], [2, 'Blue', 220], [2, 'Blue', 120], [2, 'Blue', 20],
    [2, 'Green', 220], [2, 'Green', 120], [2, 'Green', 45], [2, 'Green', 2], [2, 'Green', 5]
]
df = pd.DataFrame(data, columns=['id', 'color', 'value'])

# 初始化HTML结果容器
html_output = ""

# 第一层按id分组遍历
for id_val, id_group in df.groupby('id'):
    # 添加id标题
    html_output += f"<p>Id: {id_val}</p>\n"
    # 第二层在当前id组内按color分组遍历
    for color_val, color_group in id_group.groupby('color'):
        # 生成仅包含color和value列的表格HTML,指定表格类名
        table_html = color_group[['color', 'value']].to_html(
            classes='s-table',
            index=False,
            border=0
        )
        # 用指定容器包裹表格并追加到结果
        html_output += f'<div class="s-table-container">\n{table_html}\n</div>\n'

# 将结果保存到HTML文件(可选)
with open('grouped_output.html', 'w', encoding='utf-8') as f:
    f.write(html_output)

关键说明

  1. 双层分组逻辑:先按id拆分数据,再在每个id子集内按color二次拆分,完全匹配需求的层级结构。
  2. HTML精准控制:
    • 每个id对应独立的标题标签;
    • 用to_html()的classes参数直接指定表格类名s-table,index=False去掉默认索引列;
    • 手动添加s-table-container容器div,确保输出格式与预期完全一致。
  3. 效率优势:依赖Pandas内置的分组引擎,比手动逐行遍历处理数据效率更高,适合大规模数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 22:45:00