How to highlight both a row and a column at once in pandas

pandas, python

Solution

How about doing something like this? Enumerate the column and check the index while building up the style list:

df.style.apply(lambda x: ['background: lightblue' if x.name == 0 or i == 0 else '' 
                          for i,_ in x.iteritems()])

Or if you have color preference:

df.style.apply(lambda x: [('background: lightblue' if x.name == 0 
                            else ('background: lightgreen' if i == 0 else '')) 
                            for i,_ in x.iteritems()])

Problem

I can highlight a column using the syntax ``` import pandas as pd df = pd.DataFrame([[1,0],[0,1]]) df.style.apply(lambda x: ['background: lightblue' if x.name == 0 else '' for i in x]) ``` Similarly I can highlight a row by passing `axis=1`: ``` df.style.apply(lambda x: ['background: lightgreen' if x.name == 0 else '' for i in x], axis=1) ``` However I can't work out how to do both at once; the problem is that when I use `applymap`, I only get the values, not the names of the series that they come from.

Original source