pandas.io.formats.style.Styler.concat#

Styler.concat(other)[源代码][源代码]#

将另一个 Styler 附加到组合输出为一个表格。

Added in version 1.5.0.

参数:
其他Styler

另一个已经样式化和格式化的 Styler 对象。这个 Styler 的数据必须与原始数据具有相同的列,并且索引级别的数量也必须相同才能正确呈现。

返回:
Styler

备注

此方法的目的是通过添加其他可能有用的指标来扩展现有的样式化数据框,但这些指标可能不符合原始结构。例如添加小计行,或显示诸如均值、方差或计数等指标。

使用 applymapapply_indexmap_index 应用的样式,以及使用 formatformat_index 应用的格式将被保留。

警告

只有输出方法 to_htmlto_stringto_latex 目前支持与连接的 Stylers 一起工作。

其他输出方法,包括 to_excel 适用于拼接的 Stylers。

以下内容需要注意:

  • table_stylestable_attributescaptionuuid 都是从原始 Styler 继承的,而不是 other

  • 隐藏列和隐藏索引级别将从原始 Styler 继承。

  • css 将从原始的 Styler 继承,并且键 datarow_headingrow 的值将以 foot0_ 为前缀。如果有更多的连接,它们的样式将以 foot1_、’’foot_2’’ 等为前缀,如果一个连接的样式有另一个连接的样式,第二个样式将以 foot{parent}_foot{child}_ 为前缀。

一个常见的用例是将用户定义的函数与 DataFrame.agg 连接起来,或者通过 DataFrame.describe 与描述的统计数据连接起来。请参见示例。

例子

一个常见的用例是通过 DataFrame.agg 方法计算添加总计行,或其他方式。

>>> df = pd.DataFrame(
...     [[4, 6], [1, 9], [3, 4], [5, 5], [9, 6]],
...     columns=["Mike", "Jim"],
...     index=["Mon", "Tue", "Wed", "Thurs", "Fri"],
... )
>>> styler = df.style.concat(df.agg(["sum"]).style)  
../../_images/footer_simple.png

由于连接的对象是一个 Styler,因此现有的功能可以用来有条件地格式化它,就像原始对象一样。

>>> descriptors = df.agg(["sum", "mean", lambda s: s.dtype])
>>> descriptors.index = ["Total", "Average", "dtype"]
>>> other = (
...     descriptors.style.highlight_max(
...         axis=1, subset=(["Total", "Average"], slice(None))
...     )
...     .format(subset=("Average", slice(None)), precision=2, decimal=",")
...     .map(lambda v: "font-weight: bold;")
... )
>>> styler = df.style.highlight_max(color="salmon").set_table_styles(
...     [{"selector": ".foot_row0", "props": "border-top: 1px solid black;"}]
... )
>>> styler.concat(other)  
../../_images/footer_extended.png

other 的索引层级比原始 Styler 少时,可以在 other 中扩展索引,使用占位层级。

>>> df = pd.DataFrame(
...     [[1], [2]], index=pd.MultiIndex.from_product([[0], [1, 2]])
... )
>>> descriptors = df.agg(["sum"])
>>> descriptors.index = pd.MultiIndex.from_product([[""], descriptors.index])
>>> df.style.concat(descriptors.style)