【问题标题】:Display PySpark Dataframe as HTML Table in Juypyter Notebook在 Jupyter Notebook 中将 PySpark 数据框显示为 HTML 表
【发布时间】:2019-07-09 19:07:39
【问题描述】:

我正在尝试在 Jupyter Notebook 中将 PySpark 数据框显示为 HTML 表格,但所有方法似乎都失败了。

使用此方法显示一个文本格式的表格:

import pandas
df.toPandas()

使用此方法将 HTML 表格显示为字符串:

df.toPandas().to_html()

这会打印出未解析的更漂亮的 HTML,但不会解析为表格:

print(df.toPandas().to_html())

而且,所有这些

from IPython.display import display, HTML

HTML(df.toPandas().to_html())
print(HTML(df.toPandas().to_html()))
display(HTML(df.toPandas().to_html()))

只需打印此对象描述:

<IPython.core.display.HTML object>

我可以尝试其他任何想法吗?

【问题讨论】:

    标签: python pandas pyspark jupyter-notebook


    【解决方案1】:

    我在 AWS EMR 集群上的 JupyterLab 笔记本中使用 PySpark 内核遇到了这个问题。我发现 sparkmagic 命令%%display 解决了这个问题。例如,我的 Jupyter 单元看起来像 -

    %%display
    some_spark_df
    

    还值得指出的是,如果%%display 和变量之间有空行,则会出错。

    但是我不确定如何对 pandas 数据框执行相同的操作。使用 PySpark 内核时仍然返回对象描述(与纯 Python3 内核相反)

    【讨论】:

      【解决方案2】:

      也许您正在寻找的是这样的东西,它以表格格式打印输出 df:

      import pandas
      df.toPandas().to_html(index=False,col_space="40px", classes=('table', 'table-striped'))
      

      【讨论】:

      • 这仍然只是为我打印&lt;IPython.core.display.HTML object&gt;
      • 尝试做:import ipywidgets as widgets import pandas out = widgets.HTML("") out.value =df.toPandas().to_html(index=False,col_space="40px", classes=('table', 'table-striped')) 像这样为我工作,让我知道
      【解决方案3】:

      所以 df.toPandas() 确实将数据框呈现为 html 对象,但我的假设是您正在寻找其他东西或试图摆脱省略号 (...)。

      你可以在之前配置 pandas 来获取它们,这是我用来在列、行和字段级别获取截断的方法;

      pd.set_option('display.max_colwidth', -1)
      pd.set_option('display.max_rows', 500)
      pd.set_option('display.max_columns',500)
      

      你也可以使用上面的方法,但是你有点不正常,这是我使用的一个快速的小 udf;

      from IPython.display import display, HTML
      from pyspark.sql.functions import *
      
      def printDf(sprkDF,records): 
          return HTML(sprkDF.limit(records).toPandas().to_html())
      
      #printDf(df,10)
      

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2018-02-02
        • 2018-04-11
        • 2019-08-19
        • 2019-10-03
        • 2017-06-29
        • 2019-09-04
        • 2022-01-09
        • 2017-12-30
        • 2019-07-16
        相关资源
        最近更新 更多