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)[源代码]#
设置索引标签或列标题的文本显示值格式。
在 1.4.0 版本加入.
- Parameters:
- formatterstr、callable、dict 或 None。
定义值如何显示的 object。请参阅 notes。
- axis{0, “index”, 1, “columns”}
是否将格式化器应用于索引或列标头。
- levelint, str, list
应用于通用格式化器的级别。
- na_repbool, default False
缺失值的表示。如果 na_rep 为 None,则不应用特殊格式。
- precisionint, optional
用于显示的浮点精度,如果未使用指定的 formatter 确定的话。
- decimalstr,默认为 “.”。
用作浮点数、复数和整数小数分隔符的字符。
- thousandsstr, optional, default None
用作浮点数、复数和整数千位分隔符的字符。
- escapebool, default False
使用 ‘html’ 将单元格显示字符串中的字符
&、<、>、'和"替换为 HTML 安全序列。使用 ‘latex’ 将单元格显示字符串中的字符&、%、$、#、_、{、}、~、^和\替换为 LaTeX 安全序列。转义在formatter之前完成。- 超链接{“html”, “latex”},可选。
将包含 https://、http://、ftp:// 或 www. 的字符串模式转换为 HTML <a> 标签作为可点击的 URL 超链接(如果为 “html”),或转换为 LaTeX href 命令(如果为 “latex”)。
- Returns:
- Styler
参见
Styler.format格式化数据单元格的文本显示值。
Notes
此方法将格式化函数
formatter分配给 DataFrame 索引或列标头中的每个级别标签。如果formatter为None,则使用默认格式化器。如果为可调用对象,则该函数应接受标签值作为输入并返回可显示的表示形式,例如字符串。如果formatter以字符串形式给出,则假定它是有效的 Python 格式规范,并将其包装为可调用对象,如string.format(x)。如果给出一个dict,键应对应于 MultiIndex 级别编号或名称,值应为字符串或可调用对象,如上所述。默认格式化函数目前使用 pandas 显示精度来表示浮点数和复数,除非在此使用
precision参数。默认格式化函数不调整缺失值的表示,除非使用了na_rep参数。level参数定义了要将该方法应用于 MultiIndex 的哪个级别。如果formatter参数以字典形式给出,但未包含 level 参数中的所有级别,则这些未指定的级别将应用默认格式化器。formatter 字典中被明确排除在 level 参数之外的任何级别都将被忽略。使用
formatter字符串时,dtypes 必须兼容,否则将引发 ValueError。警告
使用输出格式 Styler.to_excel 时会忽略 Styler.format_index,因为 Excel 和 Python 具有根本不同的格式结构。但是,可以使用 number-format 伪 CSS 属性强制生成 Excel 可接受的格式。请参阅 Styler.format 的文档。
Examples
将
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
在级别上具有一致 dtypes 的
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
将
formatter与 HTMLescape和na_rep一起使用。>>> 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> ...
使用带 LaTeX 转义的
formatter。>>> 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}