如何从 pandas DataFrame 输出包含合并单元格的 html 表

Posted

技术标签:

【中文标题】如何从 pandas DataFrame 输出包含合并单元格的 html 表【英文标题】:How to output html table with merged cells from pandas DataFrame 【发布时间】:2019-12-04 16:10:36 【问题描述】:

我有一个 pandas.DataFrame df 作为:

>>> df = pd.DataFrame([[1,2,2,2,3], [1,2,3,3,3],[1,3,2,3,5],[7,9,9,3,2]], columns=list("ABCDE"))

我想在html中实现这种类型的表格(控制我可以合并哪些单元格)

我知道可以通过操作 df.to_html() 函数获得的表并使用 jquery 扩展行跨度来实现,但是 我在询问 pythonic 方式来做到这一点,即有没有一种可能的方法可以直接从某种数据透视表/数据框中获取合并表。

我考虑过临时将要合并的列设置为多索引数据框中的索引,但是这种方法至少可以说是粗略的。

如果我可以完全控制可以合并哪些单元格,例如,基于同一行中其他单元格的值,那将是完美的。

【问题讨论】:

我想不出任何明显的方法来做到这一点。如果您运行df.set_index(list('ABCDE')).to_html('test.html'),您将看到索引单元格确实存在合并(但仅在左侧所有内容也匹配的情况下)。我提到这一点不是因为它解决了你的问题,但也许如果你想看看to_htmlsource code,你可以找到负责在索引输出中合并类似单元格的代码,你可以调整它可以满足您的需求。 【参考方案1】:

更新:我设法找到了similar question,并提供了广泛的答案(请参阅 jpp 的答案),但不幸的是,否定了简单解决我的问题的可能性。正如silkworm 建议的那样,目前唯一的可能性是深入研究to_html 源,或者干预对数据帧进行多索引。

【讨论】:

以上是关于如何从 pandas DataFrame 输出包含合并单元格的 html 表的主要内容,如果未能解决你的问题,请参考以下文章

Pandas:如何从给定(行,列)对列表的 DataFrame 中检索值?

pandas 如何输出全部数据而不是省略号

如何从带有列表的嵌套 Json 创建 pandas DataFrame

如何从pandas DataFrame中制作字典列表?

Pandas:如何将 cProfile 输出存储在 pandas DataFrame 中?

最全的pandas面试基础100题目