pandas.io.formats.style.Styler.format#

Styler.format(formatter=None, subset=None, na_rep=None, precision=None, decimal='.', thousands=None, escape=None, hyperlinks=None)[源代码]#

设置单元格的文本显示值的格式。

参数
formatter字符串、可调用、判定或无

对象以定义值的显示方式。请参见备注。

subset标签、类似数组、索引切片、可选

有效的2D输入到 DataFrame.loc[<subset>] ,或者,在1D输入或单键的情况下, DataFrame.loc[:, <subset>] 对列进行优先排序的位置,以限制 data在此之前 应用该函数。

na_rep字符串,可选

缺失值的表示形式。如果 na_rep 为None,则不应用特殊格式。

1.0.0 新版功能.

precision整型,可选

用于显示的浮点精度,如果不是由指定的 formatter

1.3.0 新版功能.

decimal字符串,默认“。

用作浮点数、复数和整数的小数分隔符的字符。

1.3.0 新版功能.

thousands字符串,可选,默认为无

用作浮点数、复数和整数的千位分隔符的字符。

1.3.0 新版功能.

escape字符串,可选

使用‘html’替换字符 &<>' ,以及 " 在具有HTML安全序列的单元格显示字符串中。使用‘LaTeX’替换字符 &%$#_{{}}~^ ,以及 \ 在具有 Latex 安全序列的单元格显示字符串中。逃跑之前就已经做过了 formatter

1.3.0 新版功能.

hyperlinks{“html”,“LaTeX”},可选

转换包含https://,http://,ftp://或www的字符串模式。如果是“html”,则将<a>标记设置为可点击的URL超链接;如果是“laTeX”,则将LaTeXhref命令转换为可点击URL超链接。

1.4.0 新版功能.

退货
self造型师

参见

Styler.format_index

设置索引标签的文本显示值的格式。

注意事项

该方法分配格式化函数, formatter ,到DataFrame中的每个单元格。如果 formatterNone ,则使用默认格式化程序。如果是可调用函数,则该函数应将数据值作为输入,并返回可显示的表示形式,如字符串。如果 formatter 作为字符串给出,则假定这是有效的Python格式规范,并包装为可调用的 string.format(x) 。如果一个 dict 键应该与列名相对应,并且值应该是字符串或可调用的,如上所述。

默认格式化程序当前使用Pandas显示精度表示浮点数和复数,除非使用 precision 争论在这里。默认格式化程序不会调整缺失值的表示形式,除非 na_rep 参数被使用。

这个 subset 参数定义要对哪个区域应用格式化函数。如果 formatter 参数以DICT形式给出,但不包括子集内的所有列,则这些列将应用默认格式化程序。从子集排除的格式化程序词典中的任何列都将被忽略。

在使用 formatter 字符串数据类型必须兼容,否则将引发 ValueError 都会被举起。

实例化Styler时,可以通过设置 pandas.options

  • styler.format.formatter :默认为无。

  • styler.format.na_rep :默认为无。

  • styler.format.precision :默认为6。

  • styler.format.decimal :Default“.”。

  • styler.format.thousands :默认为无。

  • styler.format.escape :默认为无。

警告

Styler.format 在使用输出格式时被忽略 Styler.to_excel ,因为Excel和Python具有固有的不同格式结构。但是,可以使用 number-format 用于强制设置Excel允许的格式的伪CSS属性。请参见示例。

示例

使用 na_repprecision 使用默认设置 formatter

>>> df = pd.DataFrame([[np.nan, 1.0, 'A'], [2.0, np.nan, 3.0]])
>>> df.style.format(na_rep='MISS', precision=3)  
        0       1       2
0    MISS   1.000       A
1   2.000    MISS   3.000

使用 formatter 一致列数据类型规范

>>> df.style.format('{:.2f}', na_rep='MISS', subset=[0,1])  
        0      1          2
0    MISS   1.00          A
1    2.00   MISS   3.000000

使用默认设置 formatter 对于未指定的列

>>> df.style.format({0: '{:.2f}', 1: {:.1f}'}, na_rep='MISS', precision=1)
...  
         0      1     2
0    MISS   £ 1.0     A
1    2.00    MISS   3.0

多重 na_repprecision 默认情况下的规格 formatter

>>> df.style.format(na_rep='MISS', precision=1, subset=[0])
...     .format(na_rep='PASS', precision=2, subset=[1, 2])  
        0      1      2
0    MISS   1.00      A
1     2.0   PASS   3.00

使用可调用的 formatter 功能。

>>> func = lambda s: 'STRING' if isinstance(s, str) else 'FLOAT'
>>> df.style.format({0: '{:.1f}', 2: func}, precision=4, na_rep='MISS')
...  
        0        1        2
0    MISS   1.0000   STRING
1     2.0     MISS    FLOAT

使用 formatter 使用HTML语言 escapena_rep

>>> df = pd.DataFrame([['<div></div>', '"A&B"', None]])
>>> s = df.style.format(
...     '<a href="a.com/{0}">{0}</a>', escape="html", na_rep="NA"
...     )
>>> s.to_html()  
...
<td .. ><a href="a.com/&lt;div&gt;&lt;/div&gt;">&lt;div&gt;&lt;/div&gt;</a></td>
<td .. ><a href="a.com/&#34;A&amp;B&#34;">&#34;A&amp;B&#34;</a></td>
<td .. >NA</td>
...

使用 formatter 使用 Latex escape

>>> df = pd.DataFrame([["123"], ["~ ^"], ["$%#"]])
>>> df.style.format("\\textbf{{{}}}", escape="latex").to_latex()
...  
\begin{tabular}{ll}
{} & {0} \\
0 & \textbf{123} \\
1 & \textbf{\textasciitilde \space \textasciicircum } \\
2 & \textbf{\$\%\#} \\
\end{tabular}

Pandas定义了一种 number-format 伪css属性而不是 .format 方法来创建 to_excel 允许的格式。请注意,分号是受CSS保护的字符,但在Excel的格式字符串中用作分隔符。在此处定义格式时,请将分号替换为节分隔符字符(ASCII-245)。

>>> df = pd.DataFrame({"A": [1, 0, -1]})
>>> pseudo_css = "number-format: 0§[Red](0)§-§@;"
>>> df.style.applymap(lambda v: css).to_excel("formatted_file.xlsx")
...  
../../_images/format_excel_css.png