在Jupyter Notebook中将PySpark数据框显示为HTML表格

7
我将尝试在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>

还有其他我可以尝试的想法吗?

3个回答

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

值得一提的是,如果在%%display和变量之间存在空行,则会出现错误。

然而,我不确定如何使用Pandas数据框架实现相同的效果。当使用PySpark内核(而不是纯Python3内核)时,仍会返回对象描述。


1
所以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)

你也可以使用上面的方法,但顺序可能会有点混乱。这里是我使用的一个简单快速的自定义函数:

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)

希望这有所帮助。

0
也许你正在寻找的是像这样的东西,它以表格格式打印输出 df:
import pandas
df.toPandas().to_html(index=False,col_space="40px", classes=('table', 'table-striped'))

这对我来说仍然只是简单地打印出 <IPython.core.display.HTML object> - mkirzon
尝试执行以下代码:import ipywidgets as widgets import pandas out = widgets.HTML("") out.value = df.toPandas().to_html(index=False, col_space="40px", classes=('table', 'table-striped'))我的代码可以正常运行,如有问题请告知。 - nonoDa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接