Styler.apply(self, func, axis=0, subset=None, **kwargs)[source]

Apply a function column-wise, row-wise, or table-wise.

Updates the HTML representation with the result.


func should take a Series or DataFrame (depending on axis), and return an object with the same shape. Must return a DataFrame with identical index and column labels when axis=None.

axis{0 or ‘index’, 1 or ‘columns’, None}, default 0

Apply to each column (axis=0 or 'index'), to each row (axis=1 or 'columns'), or to the entire DataFrame at once with axis=None.


A valid indexer to limit data to before applying the function. Consider using a pandas.IndexSlice.


Pass along to func.



The output shape of func should match the input, i.e. if x is the input row, column, or table (depending on axis), then func(x).shape == x.shape should be true.

This is similar to DataFrame.apply, except that axis=None applies the function to the entire DataFrame at once, rather than column-wise or row-wise.


>>> def highlight_max(x):
...     return ['background-color: yellow' if v == x.max() else ''
                for v in x]
>>> df = pd.DataFrame(np.random.randn(5, 2))