I am trying to color, highlight, or change fond of Python pandas DataFrame based on the value of the cell. e.g. if the cells on each rows are bigger than the cell in the fir
From the style docs:
You can apply conditional formatting, the visual styling of a DataFrame depending on the data within, by using the DataFrame.style property.
import pandas as pd
df = pd.DataFrame([[2,3,1], [3,2,2], [2,4,4]], columns=list("ABC"))
df.style.apply(lambda x: ["background: red" if v > x.iloc[0] else "" for v in x], axis = 1)
Edit: to format specific cells, you can add condition checkers to check the name of element with Series.iteritems()
or check the index with enumerate()
, e.g. if you want to format starting from column 3, you can use enumerate and check the index:
df = pd.DataFrame([[2,3,-3], [3,2,7], [2,4,4]], columns=list("ABC"))
df.style.apply(lambda x: ["background-color: #ff33aa"
if (i >= 2 and (v > x.iloc[0] + x.iloc[1]
or v < x.iloc[0] - x.iloc[1]))
else "" for i, v in enumerate(x)], axis = 1)
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.rand(4,3))
df.style.applymap(lambda x: 'background-color : yellow' if x>df.iloc[0,0] else '')