pandas.io.formats.style.Styler.format_index#
- Styler.format_index(formatter=None, axis=0, level=None, na_rep=None, precision=None, decimal='.', thousands=None, escape=None, hyperlinks=None)[源代码]#
格式化索引标签或列标题的文本显示值。
Added in version 1.4.0.
- 参数:
- formatterstr, 可调用对象, dict 或 None
对象用于定义值的显示方式。请参阅注释。
- 轴{0, “index”, 1, “columns”}
是否将格式化器应用于索引或列标题。
- 级别int, str, list
应用于通用格式化器的级别。
- na_repstr, 可选
缺失值的表示。如果
na_rep
为 None,则不应用特殊格式。- 精度int, 可选
用于显示目的的浮点精度,如果未由指定的
formatter
确定。- decimalstr, 默认值为 “.”
用于浮点数、复数和整数的小数分隔符字符。
- thousandsstr, 可选, 默认 None
用于浮点数、复数和整数千位分隔符的字符。
- escapestr, 可选
使用 ‘html’ 将单元格显示字符串中的字符
&
,<
,>
,'
, 和"
替换为 HTML 安全的序列。使用 ‘latex’ 将单元格显示字符串中的字符&
,%
,$
,#
,_
,{
,}
,~
,^
, 和\
替换为 LaTeX 安全的序列。在formatter
之前进行转义。- 超链接{“html”, “latex”}, 可选
如果为“html”,则将包含 https://、http://、ftp:// 或 www. 的字符串模式转换为 HTML <a> 标签作为可点击的 URL 超链接;如果为“latex”,则转换为 LaTeX href 命令。
- 返回:
- Styler
返回自身以进行链式调用。
参见
Styler.format
格式化数据单元格的文本显示值。
备注
此方法为 DataFrame 索引或列标题中的每个级别标签分配一个格式化函数
formatter
。如果formatter
为None
,则使用默认格式化程序。如果是一个可调用对象,则该函数应接受一个标签值作为输入并返回一个可显示的表示形式,例如字符串。如果formatter
以字符串形式给出,则假定这是一个有效的 Python 格式规范,并包装为可调用对象string.format(x)
。如果给定为dict
,则键应对应于 MultiIndex 级别编号或名称,值应为字符串或可调用对象,如上所述。默认格式化器当前以 pandas 显示精度表示浮点数和复数,除非在此使用
precision
参数。默认格式化器不会调整缺失值的表示,除非使用na_rep
参数。level
参数定义了要对 MultiIndex 的哪些级别应用该方法。如果在formatter
参数中以字典形式给出,但没有包含 level 参数中的所有级别,则这些未指定的级别将应用默认格式化器。在格式化器字典中任何被 level 参数明确排除的级别将被忽略。当使用
formatter
字符串时,dtypes 必须兼容,否则会引发 ValueError。警告
当使用输出格式 Styler.to_excel 时,Styler.format_index 会被忽略,因为 Excel 和 Python 具有本质上不同的格式结构。然而,可以使用 number-format 伪 CSS 属性来强制 Excel 允许的格式。请参阅 Styler.format 的文档。
示例
使用
na_rep
和precision
与默认的formatter
>>> df = pd.DataFrame([[1, 2, 3]], columns=[2.0, np.nan, 4.0]) >>> df.style.format_index(axis=1, na_rep='MISS', precision=3) 2.000 MISS 4.000 0 1 2 3
在级别中使用
formatter
规范一致的数据类型>>> df.style.format_index('{:.2f}', axis=1, na_rep='MISS') 2.00 MISS 4.00 0 1 2 3
使用未指定级别的默认
formatter
>>> df = pd.DataFrame([[1, 2, 3]], ... columns=pd.MultiIndex.from_arrays( ... [["a", "a", "b"], [2, np.nan, 4]])) >>> df.style.format_index({0: lambda v: v.upper()}, axis=1, precision=1) ... A B 2.0 nan 4.0 0 1 2 3
使用一个可调用的
formatter
函数。>>> func = lambda s: 'STRING' if isinstance(s, str) else 'FLOAT' >>> df.style.format_index(func, axis=1, na_rep='MISS') ... STRING STRING FLOAT MISS FLOAT 0 1 2 3
使用带有 HTML
escape
和na_rep
的formatter
。>>> df = pd.DataFrame([[1, 2, 3]], columns=['"A"', 'A&B', None]) >>> s = df.style.format_index('$ {0}', axis=1, escape="html", na_rep="NA") ... <th .. >$ "A"</th> <th .. >$ A&B</th> <th .. >NA</td> ...
使用
formatter
与 LaTeXescape
。>>> df = pd.DataFrame([[1, 2, 3]], columns=["123", "~", "$%#"]) >>> df.style.format_index("\\textbf{{{}}}", escape="latex", axis=1).to_latex() ... \begin{tabular}{lrrr} {} & {\textbf{123}} & {\textbf{\textasciitilde }} & {\textbf{\$\%\#}} \\ 0 & 1 & 2 & 3 \\ \end{tabular}