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

造型器。格式formatter = None subset = None na_rep = None precision = None decimal = '.'数千= None escape = None hyperlinks = None[来源] #

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

参数
格式化程序str、可调用、dict 或 None

定义值如何显示的对象。参见注释。

子集标签,类似数组,IndexSlice,可选

DataFrame.loc[<subset>]的有效 2d 输入,或者,如果是 1d 输入或单个键,则为DataFrame.loc[:, <subset>],其中列优先,以限制data在应用之前功能。

na_rep str,可选

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

精度int,可选

用于显示目的的浮点精度(如果未由指定的 确定)formatter

1.3.0 版本中的新增功能。

十进制str,默认“.”

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

1.3.0 版本中的新增功能。

str,可选,默认无

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

1.3.0 版本中的新增功能。

转义str,可选

使用 'html' 将单元格显示字符串中的字符&<>'和替换" 为 HTML 安全序列。使用 'latex' 将单元格显示字符串中的字符&, %, $, #, _, {, }, , ~,^和替换\为 LaTeX 安全序列。使用“latex-math”以与“latex”模式相同的方式替换字符,数学子字符串除外,数学子字符串要么被两个字符包围,$要么以字符开头\(并以 结尾\)。逃跑之前就已经完成了formatter

1.3.0 版本中的新增功能。

超链接{“html”, “latex”},可选

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

1.4.0 版本中的新增功能。

返回
造型器

也可以看看

Styler.format_index

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

笔记

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

默认格式化程序当前以 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: 默认 ”。”。

  • styler.format.thousands:默认无。

  • styler.format.escape:默认无。

警告

使用输出格式Styler.to_excel时, Styler.format会被忽略,因为 Excel 和 Python 具有本质上不同的格式结构。但是,可以使用数字格式伪 CSS 属性来强制使用 Excel 允许的格式。请参阅示例。

例子

使用na_repandprecision与默认值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

使用formatterHTMLescapena_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>
...

在“乳胶”模式下使用formatterwith 。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}

escape在“乳胶数学”模式下应用。在下面的示例中,我们使用字符进入数学模式$

>>> df = pd.DataFrame([[r"$\sum_{i=1}^{10} a_i$ a~b $\alpha \
...     = \frac{\beta}{\zeta^2}$"], ["%#^ $ \$x^2 $"]])
>>> df.style.format(escape="latex-math").to_latex()
...  
\begin{tabular}{ll}
 & 0 \\
0 & $\sum_{i=1}^{10} a_i$ a\textasciitilde b $\alpha = \frac{\beta}{\zeta^2}$ \\
1 & \%\#\textasciicircum \space $ \$x^2 $ \\
\end{tabular}

我们可以使用该字符\(进入数学模式和\) 使用该字符关闭数学模式。

>>> df = pd.DataFrame([[r"\(\sum_{i=1}^{10} a_i\) a~b \(\alpha \
...     = \frac{\beta}{\zeta^2}\)"], ["%#^ \( \$x^2 \)"]])
>>> df.style.format(escape="latex-math").to_latex()
...  
\begin{tabular}{ll}
 & 0 \\
0 & \(\sum_{i=1}^{10} a_i\) a\textasciitilde b \(\alpha
= \frac{\beta}{\zeta^2}\) \\
1 & \%\#\textasciicircum \space \( \$x^2 \) \\
\end{tabular}

$如果我们在一个 DataFrame 单元格中包含数学公式的两种简写形式的组合,则将应用带有符号的简写形式。

>>> df = pd.DataFrame([[r"\( x^2 \)  $x^2$"], \
...     [r"$\frac{\beta}{\zeta}$ \(\frac{\beta}{\zeta}\)"]])
>>> df.style.format(escape="latex-math").to_latex()
...  
\begin{tabular}{ll}
 & 0 \\
0 & \textbackslash ( x\textasciicircum 2 \textbackslash )  $x^2$ \\
1 & $\frac{\beta}{\zeta}$ \textbackslash (\textbackslash
frac\{\textbackslash beta\}\{\textbackslash zeta\}\textbackslash ) \\
\end{tabular}

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

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