我有一个包含20多个元素的阈值的 Dataframe ,格式如下
df1:
| | 李姓|瑟|贝|
| - ------|- ------|- -|- -|
| 上部|三十|四十|10个|
| 较低|10个|五个|一个|
我有另一个包含这些元素值的 Dataframe
DF2:
| | 李姓|瑟|贝|
| - -|- -|- -|- -|
| 样品1|五十点八|100个|二十个|
| 样品二| -0.01 |2个|-1个|
如果df 2中的值大于阈值上限,则在将其写入Excel文件时,我希望df 2中单元格的背景颜色为红色。如果该值小于阈值下限,则我希望单元格的颜色为黄色。
所以在这个例子中,50.8的背景色应该是红色,因为50.8〉30。
我以前在比较单个值时也这样做过
df.style.apply(lambda x: 'background-color : red' if x>=value else '')
但是我不知道如何根据df 1中的列按列应用它
2条答案
按热度按时间xienkqul1#
可以使用
np.select
比较 Dataframe 并为条件设置结果:DataFrame和Imports(df2略有修改,因此未全部突出显示):
修改的
df2
:np.select
代码的工作原理:conds
:根据
conds
中的True
值应用styles
标签:t1qtbnec2#
您可以按照此处的建议执行操作:How to define color of specific cell in pandas dataframe based on integer position (e.g., df.iloc[1,1]) with df.style?。基本思想是创建一个包含您要使用的样式的 Dataframe ,并应用该 Dataframe :
这类似于@亨利Ecker所建议的,只是它不使用
np.select
,而是手动应用条件。