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")
Поскольку метод возвращает объект
Styler, его можно использовать в цепочке с другими методами, как будто применяются базовые высокоуровневые стили.>>> (df.style.format("{:.1f}") ... .pipe(some_highlights, min_color="green") ... .highlight_between(left=2, right=5))Расширенное использование
Иногда может потребоваться предварительно определить функции стилизации, но в тех случаях, когда эти функции зависят от стилера, данных или контекста. Так как
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)
Кроме того, предположим, что мы хотим выделить заголовок столбца, если в этом столбце есть пропущенные данные. В этом случае нам нужен сам объект данных для определения влияния на заголовки столбцов.
>>> 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)
© 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