Python: How to Apply Style on Pandas Dataframe by Comparing Two Values on the Same Column but on the Different Rows?

857 Views Asked by At

Suppose that we have this dataframe:

Value 1 Value 2 Value 3
6 5 6
6 5 10

How to apply color if values on the same column is equals but skip the first column? In my case, column Value 2 must be colored

I have used Pandas df.apply, but the example is compare column on the same row

3

There are 3 best solutions below

0
Haekal Rizky Yulianto On BEST ANSWER

Hi, you can try like this one:

df = df.style.apply(lambda x: ['background-color: lightgreen']*len(df) if (x.iloc[0] == x.iloc[1] and x.name != 'Value1') else ['background-color: white']*len(df), axis = 0)
0
mozway On

You can use:

def color(s):
    return s.duplicated(keep=False).map({True: 'background-color: yellow'})

df.style.apply(color, subset=df.columns[1:], axis=0)

output:

enter image description here

2
jezrael On

Use:

df.style.apply(lambda x: np.where(np.ones(len(x), dtype=bool) * x.nunique() == 1, 
              'background-color: yellow', ''), 
               subset=df.columns[1:], 
               axis=0)