【发布时间】:2019-01-02 10:25:00
【问题描述】:
我有一个数据框,我想用红色突出显示出现“BBC”一词的单元格。
查看this SO thread 和this one 我尝试了以下方法:
df.style.apply(lambda x: ["background-color: red" if x == "BBC News" else "background-color: green"])
或
df.style.apply(lambda x: ["background-color: red" if v == "BBC News" else "background-color: green" for v in x], axis=None)
但这不会给任何东西上色。 FWIW,我不知道我使用的示例中的x 或v 是什么。我假设x 是一个单元格,而v 将是单元格的一部分?
如何有条件地格式化单元格?我还会添加其他内容,即如果“CNN”出现在单元格中,颜色为黄色等。
编辑:我只是尝试了df.style.apply(lambda x: ["background-color: green"]),但什么也没发生(如果我使用#ff0000 或rgb(0,0,255),也是一样)。
明确地说,我在做:
df.style.apply(lambda x: ["background-color: #ff0000" if v['newsSource'] == "BBC News" else "background-color: #ffff00"], axis=None)
df.to_html("styletest.html")
所以我希望 HTML 文档 中的颜色可见,而不是数据框本身。
【问题讨论】:
-
你可以试试颜色代码而不是字符串
-
@NerdicSapo - 你的意思是十六进制,即#FFFFF?我尝试用
#ff0000替换red和用#ffff00替换green(只是为了测试它是否有效),但没有显示颜色。 -
您要更改检查第一列,即“新闻来源”。您需要访问列。
-
@rahlf23 - 去哪儿了,
lamba x['newsSource']?我尝试将其添加到 [...if x['newsSource'] == "BBC News"...]` 但没有任何改变。说明虽然我通常很擅长理解列表推导,但我完全不知道第二个示例中的x或v是什么,因此澄清这可能有助于我的理解。编辑:刚刚看到您编辑的评论。一秒钟让我申请。 -
@BruceWayne x 是每一列/行,而 v 是其中的每个元素?您是否也在寻找
v == "BBC News"只是为了"BBC" in v?
标签: python python-3.x pandas