You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用for循环为Pandas DataFrame按值高亮单元格

问题解决:通过循环为Pandas DataFrame指定值的单元格设置高亮颜色

你当前的循环写法失效,核心原因是lambda的变量延迟绑定——循环结束后,所有lambda都会引用最后一次循环的key和color值,导致所有匹配单元格都套用最后一个颜色(示例中是tomato)。

正确的循环实现方式

通过给lambda添加默认参数,把当前循环的key和color值直接绑定到lambda内部,避免延迟绑定问题:

import pandas as pd

df = pd.DataFrame({'A': list('abcdef'), 'B': list('aabbcc'), 'C': list('aaabbb')})
dict_colors = {'a': 'red', 'b': 'blue','e':'tomato'}

s = df.style
for key, color in dict_colors.items():
    # 用默认参数绑定当前循环的key和color
    s = s.apply(
        lambda dfx, k=key, c=color: [f'background: {c}' if cell == k else '' for cell in dfx],
        axis=1
    )

display(s)

更高效的非循环实现(推荐)

如果追求代码简洁和执行效率,推荐用applymap一次性遍历所有单元格,无需循环:

def highlight_cells(val):
    if val in dict_colors:
        return f'background: {dict_colors[val]}'
    return ''

df.style.applymap(highlight_cells)

这个方法直接对每个单元格做匹配判断,比多次调用apply更高效,尤其适合数据量较大的场景。


内容的提问来源于stack exchange,提问作者dallascow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 18:31:43