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中的每个单元格。如果formatter
是None
,则使用默认格式化程序。如果是可调用函数,则该函数应将数据值作为输入,并返回可显示的表示形式,如字符串。如果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_rep
和precision
使用默认设置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_rep
或precision
默认情况下的规格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语言escape
和na_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/<div></div>"><div></div></a></td> <td .. ><a href="a.com/"A&B"">"A&B"</a></td> <td .. >NA</td> ...
使用
formatter
使用 Latexescape
。>>> 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") ...