如何在PySpark Dataframe show中设置显示精度

如何在PySpark Dataframe show中设置显示精度,pyspark,spark-dataframe,Pyspark,Spark Dataframe,调用.show时,如何在PySpark中设置显示精度 考虑以下示例: 从数学导入sqrt 导入pyspark.sql.f函数 data=zip maplambda x:sqrtx,范围100105, maplambda x:sqrtx,范围200205 df=sqlCtx.createDataFramedata[col1,col2] 在df.columns.中为c选择[f.avgc.aliasc] 哪些产出: +---------+---------+ |col1 | col2| +------

调用.show时,如何在PySpark中设置显示精度

考虑以下示例:

从数学导入sqrt 导入pyspark.sql.f函数 data=zip maplambda x:sqrtx,范围100105, maplambda x:sqrtx,范围200205 df=sqlCtx.createDataFramedata[col1,col2] 在df.columns.中为c选择[f.avgc.aliasc] 哪些产出:

+---------+---------+ |col1 | col2| +---------+---------+ |10.099262230352151|14.212583322380274| +---------+---------+ 如何更改它,使其仅显示小数点后的3位数字

期望输出:

+---+---+ |col1 | col2| +---+---+ |10.099|14.213| +---+---+ 这是PySpark版本的。我之所以把它贴在这里,是因为我在搜索PySpark解决方案时找不到答案,我认为这对将来的其他人会有帮助。

Round 最简单的选择是使用:

从pyspark.sql.functions导入平均值,舍入 在df.columns.中为c选择[roundavgc,3.aliasc] +---+---+ |col1 | col2| +---+---+ |10.099|14.213| +---+---+ 这将把值保持为数字类型

格式编号 scala和python的功能是相同的。唯一的区别是进口

您可以使用将数字格式化为api官方文档中规定的所需小数位数:

将数字列x格式设置为“,”等格式,四舍五入到d位小数,并将结果作为字符串列返回

从pyspark.sql.functions导入平均值,格式化\u编号 在df.columns中选择[format_numberravgc,3.aliasc for c] +---+---+ |col1 | col2| +---+---+ |10.099|14.213| +---+---+ 转换后的列将为StringType,逗号用作分隔符:

+------+-------+ |col1 | col2| +------+-------+ |500,100.000|50,489,590.000| +------+-------+ 正如本文的scala版本中所述,我们可以使用任意字符串替换

将与rep匹配的指定字符串值的所有子字符串替换为rep

从pyspark.sql.functions导入平均值、格式\u编号、regexp\u替换 选择 [regexp_replaceformat_numberravgc,3,,.aliasc表示df.columns中的c] 显示 +-----+------+ |col1 | col2| +-----+------+ |500100.000|50489590.000| +-----+------+