Streamlit中DataFrame高亮_CAUTION列值失败,报Styler属性错误
问题分析与解决
你的报错核心是代码本身的多处问题,和Streamlit是否支持Styler无关——Streamlit完全支持pandas Styler对象渲染样式化表格。具体问题和修正方案如下:
1. 函数名不匹配+逻辑冗余
你定义的颜色函数是color_survived,但调用时写的是color_coding,会导致找不到函数;同时函数内部的颜色判断重复冗余,完全可以简化。
2. df类型错误(报错直接原因)
报错“Styler object has no attribute style”说明你调用.style的df本身已经是Styler对象了(比如之前代码里可能执行过df = df.style.highlight_max()这类操作),而Styler对象没有.style属性,自然触发报错。必须确保操作的原始对象是pandas DataFrame,而非Styler。
3. subset参数写法错误
你把列列表caution_ls额外套了一层[],不符合applymap的参数要求,直接传列名列表即可。
修正后的完整代码
# 修正颜色函数:命名匹配+简化逻辑 def color_coding(val): color = 'red' if val == 1 else 'green' return f'background-color: {color}' # 获取所有_CAUTION后缀的列 caution_ls = final_df2.filter(like='_CAUTION').columns.tolist() # 基于原始DataFrame生成样式化对象 styled_table = df.style.applymap(color_coding, subset=caution_ls) # 用Streamlit渲染样式化表格 st.dataframe(styled_table)
内容的提问来源于stack exchange,提问作者Sushmoy Mallik
相关产品推荐
相关产品推荐

