自定义Pandas Dataframe到HTML

2ul0zpep  于 2023-05-12  发布在  其他
关注(0)|答案(1)|浏览(146)

我有一个dataframe我想分组,分离和出口到HTLM的一个特定的演示文稿。我已经执行了to_htlm()方法,但没有产生我要的输出。
我的示例数据如下所示:
| 身份证|颜色|价值|
| --------------|--------------|--------------|
| 1|红色|二十|
| 1|红色|二十五|
| 1|蓝色|二十|
| 1|蓝色|十五岁|
| 1|绿色|五|
| 二|红色|一百|
| 二|蓝色|二十|
| 二|蓝色|二百二十|
| 二|蓝色|一百二十|
| 二|蓝色|二十|
| 二|绿色|二百二十|
| 二|绿色|一百二十|
| 二|绿色|四十五|
| 二|绿色|二|
| 二|绿色|五|
我想要的htlm输出是一个按ID分组,然后是Color
ID:1
| 颜色|价值|
| --------------|--------------|
| 红色|二十|
| 红色|二十五|
| 颜色|价值|
| --------------|--------------|
| 蓝色|二十|
| 蓝色|十五岁|
| 颜色|价值|
| --------------|--------------|
| 绿色|五|
ID:2
| 颜色|价值|
| --------------|--------------|
| 红色|一百|
| 颜色|价值|
| --------------|--------------|
| 蓝色|二十|
| 蓝色|二百二十|
| 蓝色|一百二十|
| 蓝色|二十|
| 颜色|价值|
| --------------|--------------|
| 绿色|二百二十|
| 绿色|一百二十|
| 绿色|四十五|
| 绿色|二|
| 绿色|五|
有没有一种有效的方法可以通过循环主 Dataframe 并根据需要对数据进行分组来动态生成htlm?

vecaoik1

vecaoik11#

IIUC,你可以试试这个:

grp = df.groupby(["id", "color"], sort=False)

tables, last_id = {}, None

for name, g in grp:
    id_ = name[0]
    
    if last_id != id_:
        title = f"<p>Id: {id_}</p>\n"
        tables[name] = title
    else:
        title = ""
    
    thtml = g.drop(columns="id").to_html(index=False)
    tables[name] = f"{title}{thtml}<br>\n"
    
    last_id = id_
    
with open("output.html", "w") as f:
    f.write("".join(tables.values()))

输出(HTML demo):

相关问题