在Pandas的Applymap()中调用其他函数返回值实现单元格着色
实现DataFrame单元格动态颜色编码
当然可以实现,只需要修改你的color函数,让它调用net_60_comp函数计算出动态阈值dis_to_60,再用这个阈值替代硬编码的数值进行判断即可。
修改后的代码示例:
首先保留你的自定义计算函数:
def net_60_comp(amount,f_rate=0.043): dis_to_60 = amount * ((1+f_rate)**(60/365)-1) dis_perc_to_60 = dis_to_60/amount return(dis_to_60,dis_perc_to_60)
然后修改color函数,动态获取阈值:
def color(val): # 将当前单元格值作为合约金额传入,获取dis_to_60 dis_to_60, _ = net_60_comp(val) # 根据单元格值与dis_to_60的对比设置背景色 bg_color = 'green' if val > dis_to_60 else 'red' return f'background-color: {bg_color}' # 应用样式到DataFrame df.style.applymap(color)
注意事项:
如果你的DataFrame中存在非数值类型的单元格,可以添加异常处理避免报错:
def color(val): try: # 转换为数值类型,兼容可能的字符串格式数值 num_val = float(val) dis_to_60, _ = net_60_comp(num_val) bg_color = 'green' if num_val > dis_to_60 else 'red' except (ValueError, TypeError): # 非数值单元格保持默认样式 bg_color = '' return f'background-color: {bg_color}'
内容的提问来源于stack exchange,提问作者Rwt987265
相关产品推荐
相关产品推荐

