pandas.io.formats.style.Styler.format
- Styler.format(formatter=None, subset=None, na_rep=None, precision=None, decimal='.', thousands=None, escape=None, hyperlinks=None)[source]
-
Форматирование текстового значения ячеек.
- Параметры:
-
- formatter:строка, вызываемый объект, словарь или None
-
Объект для определения способа отображения значений. См. примечания.
- subset:метка, массив-подобный объект, IndexSlice, необязательно
-
Допустимый двумерный ввод для DataFrame.loc[<subset>], или, в случае одномерного ввода или одиночного ключа, для DataFrame.loc[:, <subset>] с приоритетом столбцов, для ограничения
dataперед применением функции. - na_rep:строка, необязательно
-
Представление пропущенных значений. Если
na_repравно None, то специальное форматирование не применяется. - precision:целое число, необязательно
-
Точность с плавающей запятой для отображения, если она не определена заданным
formatter.Новое в версии 1.3.0.
- decimal:строка, по умолчанию “.”
-
Символ, используемый в качестве разделителя десятичных знаков для чисел с плавающей точкой, комплексных и целых чисел.
Новое в версии 1.3.0.
- thousands:строка, необязательно, по умолчанию None
-
Символ, используемый в качестве разделителя тысяч для чисел с плавающей точкой, комплексных и целых чисел.
Новое в версии 1.3.0.
- escape:строка, необязательно
-
Используйте ‘html’, чтобы заменить символы
&,<,>,', и"в строке отображения ячейки на безопасные для HTML последовательности. Используйте ‘latex’, чтобы заменить символы&,%,$,#,_,{,},~,^, и\в строке отображения ячейки на безопасные для LaTeX последовательности. Используйте ‘latex-math’, чтобы заменить символы таким же образом, как в режиме ‘latex’, за исключением математических подстрок, которые либо окружены двумя символами$или начинаются с символа\(и заканчиваются символом\). Экранирование выполняется доformatter.Новое в версии 1.3.0.
- hyperlinks:{“html”, “latex”}, необязательно
-
Преобразуйте строковые шаблоны, содержащие https://, http://, ftp:// или www. в HTML теги <a> как нажимаемые гиперссылки URL, если “html”, или команды href LaTeX, если “latex”.
Новое в версии 1.4.0.
- Возвращаемое значение:
-
- Styler
См. также
Styler.format_index-
Форматирование текстового значения меток индекса.
Примечания
Этот метод назначает функцию форматирования,
formatter, каждой ячейке в DataFrame. ЕслиformatterравноNone, используется форматирование по умолчанию. Если задан вызываемый объект, эта функция должна принимать значение данных в качестве входных данных и возвращать строку отображения. Еслиformatterзадана как строка, она предполагается как корректный шаблон Python и обертывается в вызываемый объект какstring.format(x). Если заданdict, ключи должны соответствовать именам столбцов, а значения должны быть строками или вызываемыми объектами, как описано выше.В настоящее время форматирование по умолчанию выражает числа с плавающей точкой и комплексные числа с точностью отображения pandas, за исключением использования параметра
precision. Форматирование по умолчанию не корректирует представление пропущенных значений, если не используется параметрna_rep.Параметр
subsetопределяет область применения функции форматирования. Если параметрformatterзадан в виде словаря, но не включает все столбцы в подмножестве, для этих столбцов будет применено форматирование по умолчанию. Любые столбцы в словаре форматирования, исключенные из подмножества, будут игнорироваться.При использовании строки
formatter, типы данных должны быть совместимы; в противном случае будет поднято исключение ValueError.При создании Styler, форматирование по умолчанию можно применить, установив
pandas.options:styler.format.formatter: значение по умолчанию None.styler.format.na_rep: значение по умолчанию None.styler.format.precision: значение по умолчанию 6.styler.format.decimal: значение по умолчанию “.”.styler.format.thousands: значение по умолчанию None.styler.format.escape: значение по умолчанию None.
Предупреждение
Styler.format игнорируется при использовании формата вывода Styler.to_excel, так как Excel и Python имеют разные структуры форматирования. Однако можно использовать псевдоатрибут CSS number-format для принудительного применения форматирования, допустимого в Excel. См. примеры.
Примеры
Использование
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Использование форматирования по умолчанию для неопределенных столбцов
>>> 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с HTMLescapeи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сescapeв режиме ‘latex’>>> 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в режиме ‘latex-math’. В примере ниже, мы входим в режим математики, используя символ$>>> 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 number-format вместо метода .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)
© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/2.2.2/reference/api/pandas.io.formats.style.Styler.format.html