0

我在网上看到了如何使用.style.

但是,我有一个带有一堆文本的表格,并且希望能够根据里面的单词来格式化单元格。借用上述链接参考中的这个逻辑:

def color_negative_red(val):
    color = 'red' if val < 0 else 'black'
    return 'color: %s' % color

例如,如果单元格中有单词“BBC”,则将单元格涂成红色。如果“XYZ”在单元格中,则将其涂成绿色。如果“ZYX”在单元格中,则将其涂成黑色等。

def style_dataframe(val):
    color = "red" if "BBC" in val else "white" # fuzzy match 'BBC'
    color = "green" if val == "XYZ" else color # find exact match
    color = "black" if val == "ZYX" else color # find exact match
    return 'background-color: %s' % color   
...   
df.style.applymap(style_dataframe)
df.to_html("test.html")

但是,这不会给任何东西上色。

截图test.html在此处输入图像描述

4

1 回答 1

0

你有一个大体的想法,干得好!

您需要添加的部分实际上是呈现格式。

在保存之前html,这样做:

...
stylized_df = df.style.applymap(style_dataframe)
with open("test.html","w") as html:
    html.write(stylized_df.render())

注意:你不能做if "bbc" in val你得到的错误

TypeError:(“'NoneType'类型的参数不可迭代”,'发生在索引作者')

要解决此问题,请调整If语句流:

def style_dataframe(val):
    color = "white"
    if val is not None:
        if "bbc" in val:
            color = "red"
        if val == "The Wall Street Journal":
            color = "green"
    return 'background-color: %s' % color
于 2018-07-24T21:34:20.857 回答