Highlight the negative values red and positive values black in Pandas Dataframe
Last Updated :
20 Aug, 2020
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
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...