pandas.io.formats.style.Styler.pipe#
- Styler.pipe(функция, *args, **kwargs)[источник]#
Apply
func(self, *args, **kwargs), и вернуть результат.- Параметры:
- функцияфункция
Функция для применения к Styler. Альтернативно,
(callable, keyword)кортеж, гдеkeywordявляется строкой, указывающей ключевое словоcallableкоторый ожидает Styler.- *argsнеобязательный
Аргументы, передаваемые в функция.
- **kwargsнеобязательный
Словарь ключевых аргументов, переданных в
func.
- Возвращает:
- object
Значение, возвращаемое
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 вместе с другими параметрами и возвращают styler после внесения изменений в стиль (например, вызов
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. Количество уровней в Index динамическое, поэтому нам нужен
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)