为DataFrame列设置背景色时出现错误,请求技术支持
修复DataFrame列背景色设置的错误
你的代码里有几个关键问题导致了执行错误,我来帮你逐一修正:
问题1:逻辑运算符使用错误
Python中逻辑与要使用and,而&是位运算符,同时由于运算符优先级问题,你需要给每个条件单独加括号,否则会出现运算顺序混乱的问题。
问题2:设置的是字体颜色而非背景色
你当前返回的color: %s是修改字体颜色,要设置单元格背景色,应该用background-color: %s。
问题3:样式方法选择不当
针对单个单元格元素的样式函数,更适合用applymap方法(它专门处理元素级别的样式),而apply通常用于行/列级别的批量操作。
修正后的代码如下:
def color_red_or_green(val): # 改用更清晰的if-elif-else结构,也保留逻辑判断的准确性 if val >= 70: color = 'green' elif 40 <= val < 70: color = 'orange' else: color = 'red' # 改为设置背景色 return f'background-color: {color}' # 使用applymap针对列内每个元素应用样式 week2_Percentage.style.applymap(color_red_or_green, subset=['availability'])
如果你偏好使用三元表达式,修正后的版本如下:
def color_red_or_green(val): color = 'green' if val >=70 else 'orange' if (val <70) and (val >=40) else 'red' return f'background-color: {color}' week2_Percentage.style.applymap(color_red_or_green, subset=['availability'])
这样就能正确为availability列的单元格按条件设置背景色了。
内容的提问来源于stack exchange,提问作者Dipam Soni
相关产品推荐
相关产品推荐

