Highlight the negative values red and positive values black in Pandas Dataframe
Let’s see various methods to Highlight the positive values red and negative values black in Pandas Dataframe.
First, Let’s make a Dataframe:
Python3
import pandas as pd
import numpy as np
dict = {
'Name' : [ 'Sukritin' , 'Sumit Tyagi' ,
'Akriti Goel' , 'Sanskriti' ,
'Abhishek Jain' ],
'Age' : [ 22 , 20 , 45 , 21 , 22 ],
'Marks' : [ 90 , 84 , - 33 , - 87 , 82 ]
}
df = pd.DataFrame( dict )
print (df)
|
Output:
Now, come to the highlighting part. Our objective is to highlight negative values red and positive values black.
Method 1: Using Dataframe.style.apply().
Syntax: DataFrame.style.apply(self, func, axis=0, subset=None, **kwargs)
Parameters:
- func: It should take a pandas.Series or pandas.DataFrame based on the axis and should return an object with the same shape.
- 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.
- subset: Set of columns or rows on which you want to call the func.
- **kwargs: Pass along to func.
Returns: Styler object.
Example 1: Highlighting text.
Python3
def highlight_max(s):
if s.dtype = = np. object :
is_neg = [ False for _ in range (s.shape[ 0 ])]
else :
is_neg = s < 0
return [ 'color: red;' if cell else 'color:black'
for cell in is_neg]
df.style. apply (highlight_max)
|
Output:
Example 2: Highlighting cells instead of text.
Python3
def highlight_max(s):
if s.dtype = = np. object :
is_neg = [ False for _ in range (s.shape[ 0 ])]
else :
is_neg = s < 0
return [ 'background: red; color:white'
if cell else 'background:black; color:white'
for cell in is_neg]
df.style. apply (highlight_max)
|
Output:
Method 2: Using dataframe.style.applymap() method.
Syntax: DataFrame.style.applymap(self, func, subset=None, **kwargs)
Parameters:
- func: It takes a scalar value and return the scalar values
- subset: Set of columns or rows on which you want to call the func.
- **kwargs: Pass along to func.
Returns: Styler object.
Example 1: Highlighting text.
Python3
def highlight_max(cell):
if type (cell) ! = str and cell < 0 :
return 'color: red'
else :
return 'color: black'
df.style.applymap(highlight_max)
|
Output:
Example 2: Highlighting cells instead of text.
Python3
def highlight_max(cell):
if type (cell) ! = str and cell < 0 :
return 'background: red; color:black'
else :
return 'background: black; color: white'
df.style.applymap(highlight_max)
|
Output:
Note: pandas.DataFrame.applymap() method passes only single cell into the callable function while the pandas.DataFrame.apply() passes the pandas.Series to the callable function.
Reference: Styling in Pandas
Last Updated :
20 Aug, 2020
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...