Spec-Zone.ru › pandas 2

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 с 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/&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 с 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) 
../../_images/format_excel_css.png

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API