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

Azure Jupyter Notebook中Spark Dataframe美观显示(需横向滚动条)求助

我之前在Azure Jupyter Notebook里处理过几百列的Spark DataFrame,太懂这种挤成一团没法看的痛苦了!默认的display函数确实不给力,给你几个亲测好用的解决方案,能让表格美观还支持横向滚动:

方法1:转换为Pandas DataFrame并添加自定义样式

Spark原生的DataFrame展示对多列支持不好,转成Pandas之后可以用它的样式工具来控制表格的滚动行为。注意如果你的数据量特别大,先采样或者取部分行,避免内存溢出:

from IPython.display import display, HTML
import pandas as pd

# 先取部分数据(比如前100行)转成Pandas DataFrame
sampled_pandas_df = spark_df.limit(100).toPandas()

# 给表格添加横向滚动的CSS样式
styled_table = sampled_pandas_df.style.set_table_styles([
    {'selector': 'table', 'props': [
        ('overflow-x', 'auto'),
        ('display', 'block'),
        ('width', '100%')  # 让表格占满单元格宽度
    ]}
]).to_html()

# 展示处理后的表格
display(HTML(styled_table))
方法2:全局设置Jupyter Notebook的CSS样式,一劳永逸

如果不想每次都手动处理,可以在Notebook里运行一段CSS代码,之后所有的DataFrame展示都会自动带上横向滚动:

from IPython.display import display, HTML

display(HTML("""
<style>
/* 针对Pandas生成的表格 */
.dataframe {
    overflow-x: auto !important;
    display: block !important;
    width: 100% !important;
}
/* 针对Spark原生的表格展示 */
div.output_html table {
    overflow-x: auto !important;
    display: block !important;
}
</style>
"""))

运行这个单元格之后,不管你是用display(spark_df)还是display(pandas_df),表格都会自动支持横向滚动,不用再重复设置。不过这个设置只在当前Notebook会话有效,重启Notebook后需要重新运行。

方法3:配合Spark显示选项优化效果

可以先调整Spark的全局显示配置,让列内容不自动截断,再结合上面的CSS设置,效果会更好:

# 设置Spark显示的最大行数和不自动截断列内容
spark.conf.set("spark.sql.repl.eagerEval.maxNumRows", 100)
spark.conf.set("spark.sql.repl.eagerEval.truncate", False)

# 直接展示Spark DataFrame,配合之前的CSS就会有横向滚动
display(spark_df)

这样设置后,列的内容会完整显示,再加上横向滚动,查看多列数据就方便多了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:08:35