如何使用pandas的style功能根据匹配规则为Excel单元格设置背景色
错误原因
applymap 是逐单元格处理方法,每次仅能拿到单个单元格的数值,无法同时获取同一行其他列的取值,无法实现跨列匹配判断。使用apply报错是因为返回的样式结构和待设置的子集形状不匹配,没有对应到指定的两列。
正确实现代码
如果要保留你原来的check_match逻辑,可以用以下写法:
def check_match(c1, c2): return c1 == "e1" and c2 == "e2" def highlight_matched_row(row): if check_match(row["col1"], row["col2"]): # 匹配成功时给两个列返回红色背景样式 return pd.Series( ["background-color: red", "background-color: red"], index=["col1", "col2"] ) # 匹配失败返回空样式 return pd.Series(["", ""], index=["col1", "col2"]) # 按行应用样式,指定仅处理col1、col2两列 styled = df.style.apply(highlight_matched_row, axis=1, subset=["col1", "col2"])
实现逻辑说明
通过apply方法指定axis=1按行遍历数据,每次可以拿到完整的一行数据做匹配判断,返回的Series长度和索引完全对应subset参数指定的两列,不会出现形状不匹配的报错,也能正确完成跨列的匹配判断。
内容的提问来源于stack exchange,提问作者bkira
相关产品推荐
相关产品推荐

