Spec-Zone.ru › pandas 2

pandas.io.formats.style.Styler.pipe

Styler.pipe(func, *args, **kwargs)[source]

Применяет func(self, *args, **kwargs), и возвращает результат.

Параметры:
func:функция

Функция для применения к Styler. В качестве альтернативы, кортеж (callable, keyword), где keyword — строка, указывающая ключевое слово callable , которое ожидает Styler.

*args:необязательно

Аргументы, передаваемые в func.

**kwargs:необязательно

Словарь ключевых аргументов, передаваемый в func.

Возвращает:
объект

Значение, возвращаемое func.

См. также

DataFrame.pipe

Аналогичный метод для DataFrame.

Styler.apply

Применение функции стилизации CSS по столбцам, строкам или всей таблице.

Примечания

Как и DataFrame.pipe(), этот метод может упростить применение нескольких пользовательских функций к стилеру. Вместо написания:

f(g(df.style.format(precision=3), arg1=a), arg2=b, arg3=c)

пользователи могут написать:

(df.style.format(precision=3)
   .pipe(g, arg1=a)
   .pipe(f, arg2=b, arg3=c))

В частности, это позволяет пользователям определять функции, принимающие объект стилера, а также другие параметры и возвращающие стилер после внесения изменений в стили (например, вызов Styler.apply() или Styler.set_properties()).

Примеры

Общее использование

Общим шаблоном использования является предварительное определение операций стилизации, которые можно легко применять к обычному стилеру в одном pipe вызове.

>>> def some_highlights(styler, min_color="red", max_color="blue"):
...      styler.highlight_min(color=min_color, axis=None)
...      styler.highlight_max(color=max_color, axis=None)
...      styler.highlight_null()
...      return styler
>>> df = pd.DataFrame([[1, 2, 3, pd.NA], [pd.NA, 4, 5, 6]], dtype="Int64")
>>> df.style.pipe(some_highlights, min_color="green")  
../../_images/df_pipe_hl.png

Поскольку метод возвращает объект Styler, его можно использовать в цепочке с другими методами, как будто применяются базовые высокоуровневые стили.

>>> (df.style.format("{:.1f}")
...         .pipe(some_highlights, min_color="green")
...         .highlight_between(left=2, right=5))  
../../_images/df_pipe_hl2.png

Расширенное использование

Иногда может потребоваться предварительно определить функции стилизации, но в тех случаях, когда эти функции зависят от стилера, данных или контекста. Так как Styler.use и Styler.export предназначены для независимости от данных, их нельзя использовать в этой цели. Кроме того, методы типа Styler.apply и Styler.format не учитывают контекст, поэтому решением является использование pipe для динамического обертывания этой функциональности.

Предположим, мы хотим написать общую функцию стилизации, которая выделяет последний уровень MultiIndex. Количество уровней в индексе динамично, поэтому нам нужен контекст Styler для определения уровня.

>>> def highlight_last_level(styler):
...     return styler.apply_index(
...         lambda v: "background-color: pink; color: yellow", axis="columns",
...         level=styler.columns.nlevels-1
...     )  
>>> df.columns = pd.MultiIndex.from_product([["A", "B"], ["X", "Y"]])
>>> df.style.pipe(highlight_last_level)  
../../_images/df_pipe_applymap.png

Кроме того, предположим, что мы хотим выделить заголовок столбца, если в этом столбце есть пропущенные данные. В этом случае нам нужен сам объект данных для определения влияния на заголовки столбцов.

>>> def highlight_header_missing(styler, level):
...     def dynamic_highlight(s):
...         return np.where(
...             styler.data.isna().any(), "background-color: red;", ""
...         )
...     return styler.apply_index(dynamic_highlight, axis=1, level=level)
>>> df.style.pipe(highlight_header_missing, level=1)  
../../_images/df_pipe_applydata.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.pipe.html

Spec-Zone.ru

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