为熊猫数据框的行着色并转换为HTML表

时间:2018-10-08 16:24:15

标签: python html pandas

我正在尝试使用烧瓶显示熊猫数据框。我成功地做到了,直到我决定为数据框的某些行着色。特别是当我应用to_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 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 = df.style.apply(highlight_greaterthan,threshold=1.0,column=['C','B'], axis=1)
display(df)

接下来,当我运行to_html()时,所有程序都会崩溃。

df_html = df.to_html

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-28-4d0cc094240b> in <module>()
----> 1 df_html = df.to_html

AttributeError: 'Styler' object has no attribute 'to_html'

关于如何保存行的颜色的任何想法?谢谢!

1 个答案:

答案 0 :(得分:1)

如错误消息所示,您正在尝试在DataFrame.to_html()对象上使用Styler方法,因为df.style.apply返回Styler对象而不是{{1 }}。

docs说,您可以使用DataFrame来渲染HTML。

类似这样的东西:

render()

style1 = df.style.apply(highlight_greaterthan,threshold=1.0,column=['C','B'], axis=1) df_html = style1.render 的输出为:

style1.render()