Solución:
Esta solución le permite pasar una etiqueta de columna o una lista de etiquetas de columna para resaltar toda la fila si ese valor en la (s) columna (s) excede el umbral.
import pandas as pd
import numpy as np
np.random.seed(24)
df = pd.DataFrame({'A': np.linspace(1, 10, 10)})
df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4), columns=list('BCDE'))],
axis=1)
df.iloc[0, 2] = np.nan
def highlight_greaterthan(s, threshold, column):
is_max = pd.Series(data=False, index=s.index)
is_max[column] = s.loc[column] >= threshold
return ['background-color: yellow' if is_max.any() else '' for v in is_max]
df.style.apply(highlight_greaterthan, threshold=1.0, column=['C', 'B'], axis=1)
Producción:
O por una columna
df.style.apply(highlight_greaterthan, threshold=1.0, column='E', axis=1)
Aquí hay un enfoque más simple:
-
Suponga que tiene un marco de datos de 100 x 10, df. También suponga que desea resaltar todas las filas correspondientes a una columna, digamos “duración”, mayor que 5.
-
Primero debe definir una función que resalte las celdas. El verdadero truco es que debe devolver una fila, no una sola celda. Por ejemplo,
def highlight(s): if s.duration > 5: return ['background-color: yellow']*10 else: return ['background-color: white']*10
** Tenga en cuenta que la parte de devolución debe ser una lista de 10 (correspondiente al número de columnas). Ésta es la parte clave.
-
Ahora puede aplicar esto al estilo del marco de datos como:
df.style.apply(highlight, axis=1)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)