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/1.5.0/reference/api/pandas.io.formats.style.Styler.pipe.html