如何在 DataFrame 上将 `style` 与 `to_html` 类 结合使用?
How to use `style` in conjunction with the `to_html` classes on a DataFrame?
我有一个类似
的 DataFrame
df = pd.DataFrame(np.random.randn(10).reshape(2, 5))
df
# 0 1 2 3 4
# 0 -0.067162 -0.505401 -0.019208 1.123936 0.087682
# 1 -0.373212 -0.598412 0.185211 0.736143 -0.469111
我正在尝试将此 DataFrame 输出为 HTML,并且之前使用 to_html
就像
df.to_html(classes=['table', 'table-hover', 'table-bordered'],
float_format=lambda x: '{0:.3f}s'.format(x))
但后来我遇到了 Style 功能,并认为在我的 DataFrame 中有一个用于浮动的样式器会很好。喜欢
def colorize(num)
color = 'red' if (np.isnan(num) or num > 0) else 'green'
return 'color: %s' % color
我可以使用
将其应用于我的 DataFrame
df_styler = df.Style.applymap(colorize)
但现在 df_styler
是一个 Styler
对象,虽然它有一个 render
方法,但我不知道如何传递 classes
列表或我不再与 to_html
一起使用的浮点格式化程序...
有没有一种方法可以结合使用 Style
函数和 CSS 类 / 在 to_html
中找到的格式化程序?
试试这个:
html = df.style.applymap(colorize) \
.set_table_attributes('border="1" class="dataframe table table-hover table-bordered"') \
.set_precision(3) \
.render()
with open('d:/temp/a2.html', 'w') as f:
f.write(html)
结果:
这为我修复了它:
from premailer import transform
html=df.style.applymap(colorize).render() # whatever style you want
html_inline=transform(html)
您应该可以使用 html_inline 变量。邮件不支持html中的<style>
标签,样式属性需要在线传递。
我有一个类似
的 DataFramedf = pd.DataFrame(np.random.randn(10).reshape(2, 5))
df
# 0 1 2 3 4
# 0 -0.067162 -0.505401 -0.019208 1.123936 0.087682
# 1 -0.373212 -0.598412 0.185211 0.736143 -0.469111
我正在尝试将此 DataFrame 输出为 HTML,并且之前使用 to_html
就像
df.to_html(classes=['table', 'table-hover', 'table-bordered'],
float_format=lambda x: '{0:.3f}s'.format(x))
但后来我遇到了 Style 功能,并认为在我的 DataFrame 中有一个用于浮动的样式器会很好。喜欢
def colorize(num)
color = 'red' if (np.isnan(num) or num > 0) else 'green'
return 'color: %s' % color
我可以使用
将其应用于我的 DataFramedf_styler = df.Style.applymap(colorize)
但现在 df_styler
是一个 Styler
对象,虽然它有一个 render
方法,但我不知道如何传递 classes
列表或我不再与 to_html
一起使用的浮点格式化程序...
有没有一种方法可以结合使用 Style
函数和 CSS 类 / 在 to_html
中找到的格式化程序?
试试这个:
html = df.style.applymap(colorize) \
.set_table_attributes('border="1" class="dataframe table table-hover table-bordered"') \
.set_precision(3) \
.render()
with open('d:/temp/a2.html', 'w') as f:
f.write(html)
结果:
这为我修复了它:
from premailer import transform
html=df.style.applymap(colorize).render() # whatever style you want
html_inline=transform(html)
您应该可以使用 html_inline 变量。邮件不支持html中的<style>
标签,样式属性需要在线传递。