如何按单元格条件高亮Pandas DataFrame行?含透视表生成场景
高亮符合条件的DataFrame行
你通过透视表生成的是多层列结构的DataFrame,层级为[聚合函数(sum/len), completed on time],要高亮「按时完成(on schedule)和逾期(overdue)对应统计值均为0」的行,可以通过pandas.Styler实现:
步骤1:定义高亮规则函数
编写函数接收每行数据,判断是否满足条件后返回对应样式:
def highlight_rows(row): # 假设completed on time的取值为0(逾期)、1(按时),请根据实际取值调整 # 检查所有聚合函数下,两种状态的数值是否都为0 on_schedule_zero = (row.loc[:, (slice(None), 1)] == 0).all() overdue_zero = (row.loc[:, (slice(None), 0)] == 0).all() if on_schedule_zero and overdue_zero: return ['background-color: yellow'] * len(row) else: return [''] * len(row)
步骤2:应用样式到DataFrame
调用Styler.apply按行应用规则:
styled_df = df.style.apply(highlight_rows, axis=1) # 渲染并显示结果 styled_df
补充说明
- 如果
completed on time的取值是字符串(比如'按时'/'逾期'),只需把代码中的0和1替换成对应实际值即可。 - 若只需针对特定聚合函数判断(比如只看任务计数
len),可以简化判断逻辑:
# 仅检查len层级下的按时、逾期计数是否都为0 on_schedule_zero = (row.loc[('len', 1)] == 0) overdue_zero = (row.loc[('len', 0)] == 0)
内容的提问来源于stack exchange,提问作者irina_ikonn
相关产品推荐
相关产品推荐

