Pandas Dataframes to_html: Resaltar filas de tablas

Estoy creando tablas utilizando la función pandas to_html, y me gustaría poder resaltar la fila inferior de la tabla generada, que es de longitud variable. No tengo ninguna experiencia real de html para hablar, y todo lo que encontré en línea fue esto

Month Savings
January $100

Así que sé que la última fila debe tener

(o el color que quiera) en lugar de

, pero lo que realmente no sé cómo hacer es obtener Esto ocurrirá con las tablas que estoy creando. No creo que pueda hacerlo con la función to_html en sí, pero ¿cómo puedo hacerlo después de que se haya creado la tabla?

Cualquier ayuda es apreciada.

Puedes hacerlo en javascript usando jQuery:

  $('table tbody tr').filter(':last').css('background-color', '#FF0000') 

También las versiones más nuevas de pandas agregan un dataframe de dataframe clase a la tabla html para que pueda filtrar solo las tablas de pandas usando:

  $('table.dataframe tbody tr').filter(':last').css('background-color', '#FF0000') 

Pero puedes agregar tus propias clases si quieres:

 df.to_html(classes='my_class') 

O incluso múltiple:

 df.to_html(classes=['my_class', 'my_other_class']) 

Si está utilizando el cuaderno de IPython, aquí está el ejemplo completo:

 In [1]: import numpy as np import pandas as pd from IPython.display import HTML, Javascript In [2]: df = pd.DataFrame({'a': np.arange(10), 'b': np.random.randn(10)}) In [3]: HTML(df.to_html(classes='my_class')) In [4]: Javascript('''$('.my_class tbody tr').filter(':last') .css('background-color', '#FF0000'); ''') 

O incluso puedes usar CSS plano:

 In [5]: HTML('''  ''' + df.to_html(classes='df')) 

Las posibilidades son infinitas 🙂

Editar: crear un archivo html

 import numpy as np import pandas as pd HEADER = '''      ''' FOOTER = '''   ''' df = pd.DataFrame({'a': np.arange(10), 'b': np.random.randn(10)}) with open('test.html', 'w') as f: f.write(HEADER) f.write(df.to_html(classes='df')) f.write(FOOTER) 

Como los pandas tienen ahora una funcionalidad de estilo, ya no necesitas hacks de JavaScript. Esta es una solución pura de pandas:

 import pandas as pd df = [] df.append(dict(date='2016-04-01', sleep=11.2, calories=2740)) df.append(dict(date='2016-04-02', sleep=7.3, calories=3600)) df.append(dict(date='2016-04-03', sleep=8.3, calories=3500)) df = pd.DataFrame(df) def highlight_last_row(s): return ['background-color: #FF0000' if i==len(s)-1 else '' for i in range(len(s))] s = df.style.apply(highlight_last_row) 

introduzca la descripción de la imagen aquí

No puedo hacer que el “ejemplo completo de trabajo” de @ Viktor funcione en ipython (jupyter) porque la última línea es la que se procesa, pero mover la representación HTML después de la línea de Javascript no me funcionó.

El ejemplo de “CSS simple” funciona, e incluso podemos poner un Javascript allí. Esto me permitió renderizar un dataframe de Pandas utilizando https://github.com/christianbach/tablesorter .

Aquí hay un ejemplo completo:

 df = pd.DataFrame({'a': np.arange(10), 'b': np.random.randn(10)}) from IPython.display import HTML, Javascript HTML('''   '''+ df.to_html(classes ='sort" id = "sort')) 

Tenga en cuenta que los archivos .js son locales. La referencia directa al código en bruto de github no funcionará ya que el tipo MIME es simple / txt.

Actualización : Me acabo de dar cuenta de que Pandas v0.17.1 lanzó una característica para agregar estilo a la salida HTML del dataframe .