Python 改进PySpark DataFrame.show输出以适合Jupyter笔记本

Python 改进PySpark DataFrame.show输出以适合Jupyter笔记本,python,pandas,apache-spark,pyspark,jupyter,Python,Pandas,Apache Spark,Pyspark,Jupyter,在Jupyter笔记本中使用PySpark,Spark的数据帧.show的输出与熊猫数据帧的显示方式相比,技术含量较低。我想“好吧,它很管用”,直到我得到这个: 输出未根据笔记本的宽度进行调整,因此线条以难看的方式缠绕。有没有办法定制这个?更好的是,有没有一种方法可以获得输出Pandas样式(显然不转换为Pandas.DataFrame)这是从Spark 2.4.0开始的,方法是将Spark.sql.repl.angereval.enabled设置为True: 在我的表格中有很多列,我玩过之后

在Jupyter笔记本中使用PySpark,Spark的
数据帧.show的输出与熊猫数据帧的显示方式相比,技术含量较低。我想“好吧,它很管用”,直到我得到这个:

输出未根据笔记本的宽度进行调整,因此线条以难看的方式缠绕。有没有办法定制这个?更好的是,有没有一种方法可以获得输出Pandas样式(显然不转换为
Pandas.DataFrame

这是从Spark 2.4.0开始的,方法是将
Spark.sql.repl.angereval.enabled
设置为
True


在我的表格中有很多列,我玩过之后,决定最好的办法是使用:

df.show(n=5, truncate=False, vertical=True)

这是垂直显示的,没有截断,是我能想到的最干净的视图。

除了上面由@karan singla和@vijay jangir给出的答案之外,还有一个方便的一行注释,注释掉
空白:预包装
样式可以这样做:

$ awk -i inplace '/pre-wrap/ {$0="/*"$0"*/"}1' $(dirname `python -c "import notebook as nb;print(nb.__file__)"`)/static/style/style.min.css
这意味着;使用
awk
在工作Python环境中的
styles.css
中找到的文件上,更新包含
pre-wrap
并被
*/--*/
包围的在位行,即注释掉

从理论上讲,如果使用多个环境,例如使用蟒蛇,则可以将其用作别名

参考文献:


您可以使用html魔术命令。通过检查输出单元格,检查CSS选择器是否正确。然后相应地编辑下面的内容并在单元格中运行它

%%html
<style>
div.output_area pre {
    white-space: pre;
}
</style>
%%%html
分区输出区预处理{
空白:预处理;
}

您只需将前5行转换为pandas df
df.limit(5).toPandas()
两种解决方法:也许您可以尝试将Jupyter笔记本单元扩展为接受的答案,或者使用
df.show(vertical=True)
如您在
def show(self,n=20,truncate=True,vertical=False)示例中所见
在源代码中,这似乎不适用于我自己的数据集,它有很多列
spark.conf.set(“spark.sql.repl.angeeeval.enabled”,True)
后接
df.limit(10)
如果它能工作,那就好了,但在
2.4.3
上没有,显然。这会将整个数据集加载到您的驱动程序中,这可能是不需要的。您的代码的输出对我来说比水平视图要好,因为它不会隐藏任何列。这太完美了。genius---------