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

如何使用Python按多条件为DataFrame指定列的单元格着色

解决方案

你之前的代码错误地将日期列作为判断条件,实际上你数据里各环节列的数值本身就是时长天数,直接判断对应数值即可,以下是可直接运行的实现代码:

import pandas as pd 
from datetime import datetime, timedelta
  
# 构造示例数据
data = {'Date': ['2021-10-01', '2021-10-02', '2021-10-03', '2021-10-04','2021-10-05','2021-10-06','2021-10-07','2021-10-08'],
        'Waiting_for': [5, 0, 0, 10,34,10,4,12],
        'Picking': [20,12,5,9,0,21, 19, 18],
        'Shipped': [20, 21,7,9,12, 19,0, 18],
        'Received': [5,7,10,9,20,6,10,5]}  
df = pd.DataFrame(data)  
df['Date'] = pd.to_datetime(df['Date'])  

# 定义各环节阈值,不在字典中的列不做高亮处理
threshold_map = {
    'Waiting_for': 32,
    'Picking': 34,
    'Shipped': 36
}

def highlight_cells(val, col_name):
    # 非目标列、值≤0、未超过阈值都返回空样式
    if col_name not in threshold_map or val <= 0 or val <= threshold_map[col_name]:
        return ''
    # 符合条件的单元格返回高亮样式,颜色可自行调整
    return 'background-color: yellow'

# 逐列应用样式,把列名作为参数传给高亮函数
styled_df = df.style.apply(lambda col: [highlight_cells(v, col.name) for v in col], axis=0)

# 【可选】在Jupyter环境中直接展示效果
# styled_df

# 【可选】导出为带格式的Excel文件
# styled_df.to_excel('高亮订单数据.xlsx', engine='openpyxl', index=False)

逻辑说明

  • 首先定义各环节的阈值映射,后续新增环节只需要在字典里添加对应阈值即可
  • 逐列遍历判断:只有需要校验的环节列才会走高亮判断逻辑
  • 同时满足两个条件的单元格才会添加高亮样式:数值大于0、数值超过对应环节的阈值
  • 高亮颜色可自行修改background-color后的取值,支持颜色名、十六进制色值等标准CSS颜色格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:24:08