如何在Streamlit中按值为DataFrame单元格着色:≥50绿,否则红?
Streamlit中DataFrame按指定规则着色单元格的实现
完整代码实现
import pandas as pd import streamlit as st data = { 'Category': ['A', 'B', 'C'], 'Value': [25, 75, 50] } df = pd.DataFrame(data) # 定义根据数值返回背景色的函数 def color_value_cell(val): return 'background-color: #7ccd7c' if val >= 50 else 'background-color: #ff6b6b' # 仅对Value列应用自定义着色规则 styled_df = df.style.applymap(color_value_cell, subset=['Value']).format(precision=2) # 在Streamlit中渲染带样式的DataFrame st.dataframe(styled_df)
关键说明
- 自定义
color_value_cell函数:通过条件判断为不同区间的数值返回对应CSS背景色样式(示例用柔和的浅绿、浅红,可替换为任意十六进制颜色码) applymap方法:配合subset=['Value']参数,精准对目标列应用样式,不影响其他列- 保留
format(precision=2):确保数值按指定精度展示,与原有需求保持一致 - 直接传入
st.dataframe:Streamlit支持渲染Pandas Styler对象,可正常显示带背景色的单元格,替代之前的渐变着色效果
内容的提问来源于stack exchange,提问作者Megan
相关产品推荐
相关产品推荐

