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

按两列分组DataFrame时某列含两个指定值如何高亮对应行

实现方案

整体逻辑分为两步:首先按[vertex, hour]分组判断每个分组是否同时包含两个目标值,生成对应行的高亮掩码;再通过pandas的样式系统给符合条件的行设置高亮格式。

import pandas as pd

# 示例数据
d = {'vertex': [0,0,0,1,1] ,'hour': [1, 1,2,1,2], 'value': ['sun', 'watermelon','sun','watermelon','sun']}
df = pd.DataFrame(data=d)

# 1. 生成高亮掩码:判断每个分组是否同时包含sun和watermelon,结果广播到每一行
highlight_mask = df.groupby(['vertex', 'hour'])['value'].transform(
    lambda x: {'sun', 'watermelon'}.issubset(x)
)

# 2. 定义高亮样式函数
def row_highlight(row, mask):
    # 符合条件的行设置黄色背景,可自行修改颜色值
    return ['background-color: #fff2ac'] * len(row) if mask[row.name] else [''] * len(row)

# 3. 应用样式
styled_df = df.style.apply(row_highlight, axis=1, mask=highlight_mask)

效果验证

  • 运行后在Jupyter Notebook/Lab环境直接输出styled_df即可看到高亮效果,示例中vertex为0、hour为1的前两行会被高亮,其余行无样式,完全匹配需求。
  • 如果需要导出结果:
    • 导出为带样式的HTML文件:调用styled_df.to_html('highlight_result.html', index=False)
    • 导出为带高亮的Excel文件:先安装openpyxl依赖,再调用styled_df.to_excel('highlight_result.xlsx', engine='openpyxl', index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:36:07