You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Streamlit中Pandas DataFrame行高样式不生效问题排查求助

问题分析与解决方案

你的问题主要由代码错误和Streamlit的样式支持限制共同导致,具体如下:

一、代码层面的明显错误

  1. 变量名混淆:null_row函数返回时误用了未定义的color变量,实际应该用你定义的size变量
  2. 语法与格式错误:赋值语句写法违规,且CSS单位未加引号(需字符串格式),同时函数调用时名称不匹配
  3. 函数引用错误:定义的行高函数是null_row,但apply时写的是height,名称完全不对应

修正后的代码:

def resistance(s):
    color = '#fcdcdc' if s.interpretation == 'Resistant' else ''
    return ['background-color: {}'.format(color)]*len(s)

def null_row(s):
    # 修正赋值语法,给CSS单位加引号
    size = '1px' if s.interpretation == '' else '12px'
    # 修正变量名,用size替代color
    return ['line-height: {}'.format(size)]*len(s)

# 修正函数引用,用null_row替代height
df_style = df.style.\
    apply(resistance, axis=1).\
    apply(null_row, axis=1)

st.dataframe(df_style)

二、Streamlit的样式支持限制

即使修正代码,line-height仍可能无法生效——因为Streamlit的st.table和st.dataframe对Pandas Styler的CSS属性支持并不完全,很多自定义样式会被框架过滤或覆盖。

如果需要实现行高自定义,建议:

  • 对于st.dataframe,尝试通过st.markdown注入自定义CSS的方式强制修改行高(针对表格DOM元素)
  • 若只是想压缩空行,更简单可靠的方式是直接在DataFrame层面过滤掉空行后再渲染

内容的提问来源于stack exchange,提问作者Johann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:25:33