pandas.io.formats.style.Styler.apply#
- Styler.apply(func, axis=0, subset=None, **kwargs)[源代码][源代码]#
应用一个 CSS 样式函数按列、按行或按表格。
使用结果更新 HTML 表示。
- 参数:
- func函数
如果
axis
在 [0,1] 中,func
应该接受一个 Series 并返回一个长度相同的类列表对象,或者一个长度不一定相同的 Series,具有考虑subset
的有效索引标签。如果axis
是None
,func
应该接受一个 DataFrame 并返回一个形状相同的 ndarray 或一个形状不一定相同的 DataFrame,具有考虑subset
的有效索引和列标签。在 1.3.0 版本发生变更.
在 1.4.0 版本发生变更.
- 轴{0 或 ‘index’, 1 或 ‘columns’, None}, 默认 0
应用于每一列(
axis=0
或'index'
),应用于每一行(axis=1
或'columns'
),或一次性应用于整个 DataFrame(axis=None
)。- 子集label, 类似数组, IndexSlice, 可选
一个有效的 2d 输入到 DataFrame.loc[<subset>],或者,在 1d 输入或单个键的情况下,到 DataFrame.loc[:, <subset>],其中列优先,以限制
data
在应用函数 之前。- **kwargsdict
传递给
func
。
- 返回:
- Styler
参见
Styler.map_index
对标题元素逐个应用CSS样式函数。
Styler.apply_index
按级别对标题应用CSS样式函数。
Styler.map
逐元素应用CSS样式函数。
注释
func
的输出元素应该是字符串形式的 CSS 样式,格式为 ‘attribute: value; attribute2: value2; …’,或者,如果不需要对该元素应用任何内容,则为空字符串或None
。这与
DataFrame.apply
类似,除了axis=None
将函数应用于整个 DataFrame,而不是按列或按行。例子
>>> def highlight_max(x, color): ... return np.where(x == np.nanmax(x.to_numpy()), f"color: {color};", None) >>> df = pd.DataFrame(np.random.randn(5, 2), columns=["A", "B"]) >>> df.style.apply(highlight_max, color="red") >>> df.style.apply(highlight_max, color="blue", axis=1) >>> df.style.apply(highlight_max, color="green", axis=None)
使用
subset
将应用限制为单个列或多列>>> df.style.apply(highlight_max, color="red", subset="A") ... >>> df.style.apply(highlight_max, color="red", subset=["A", "B"]) ...
使用二维输入到
subset
以选择行以及列>>> df.style.apply(highlight_max, color="red", subset=([0, 1, 2], slice(None))) ... >>> df.style.apply(highlight_max, color="red", subset=(slice(0, 5, 2), "A")) ...
使用一个返回长度不等但包含有效索引标签的 Series / DataFrame 的函数
>>> df = pd.DataFrame([[1, 2], [3, 4], [4, 6]], index=["A1", "A2", "Total"]) >>> total_style = pd.Series("font-weight: bold;", index=["Total"]) >>> df.style.apply(lambda s: total_style)
更多详情请参见 表格可视化 用户指南。