Применение карты стилей при записи фрейма данных в html с помощью pandas

#python #pandas

#python #pandas

Вопрос:

Я хочу вывести фрейм данных pandas в .html, а также применить стиль. В документации * приведен этот пример, который отображает отрицательные значения красным цветом.

 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 color_negative_red(val):
    """
    Takes a scalar and returns a string with
    the css property `'color: red'` for negative
    strings, black otherwise.
    """
    color = 'red' if val < 0 else 'black'
    return 'color: %s' % color

s = df.style.applymap(color_negative_red)
s
  

Могу ли я вывести форматированный df с помощью метода «to_html»? Из этой документации** Я вижу, что есть опция «форматирование», но я не могу понять, как применить ее в этом случае.

Вот как я пишу неформатированный df:

 df.to_html(r'c:temphtml.html')
  

*http://pandas.pydata.org/pandas-docs/stable/style.html

**http://pandas.pydata.org/pandas-docs/stable/generated/pandas .DataFrame.to_html.html

Ответ №1:

Я не знаю, лучший ли это (или идиоматический) способ сделать это, но он должен работать:

 with open('html.html', 'w') as html:
    html.write(s.render())
  

Комментарии:

1. X, спасибо! Я хотел бы иметь возможность сохранить его в том же формате, что и to_html по умолчанию, поэтому было бы очень приятно иметь возможность применять функцию напрямую.