Saltar al contenido

¿Cómo usar Python Pandas Stylers para colorear una fila completa en función de una columna determinada?

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:

ingrese la descripción de la imagen aquí

O por una columna

df.style.apply(highlight_greaterthan, threshold=1.0, column='E', axis=1)

ingrese la descripción de la imagen aquí

Aquí hay un enfoque más simple:

  1. 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.

  2. 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.

  1. 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)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *