0

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

yunastrian
  • 13
  • 2

3 Answers3

1

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

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

mozway
  • 194,879
  • 13
  • 39
  • 75
0

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)
jezrael
  • 822,522
  • 95
  • 1,334
  • 1,252
  • @yunastrian - Are you sure solution is correct? First column is always `Value 1` ? DataFrame has always 2 rows? – jezrael Oct 27 '22 at 08:22
  • Yes it solve my problem. My dataframe has always 2 rows, And I rename the column name "Value 1" to the right column nime – yunastrian Oct 28 '22 at 08:56