我正在尝试使用烧瓶显示熊猫数据框。我成功地做到了,直到我决定为数据框的某些行着色。特别是当我应用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'
关于如何保存行的颜色的任何想法?谢谢!
答案 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()