繁体   English   中英

pyspark数据框显示不带小数的整数

[英]pyspark dataframe to display whole numbers without decimal

在下面的代码中,数据文件的所有列都是字符串。 其中一列存储整数或带一个小数位的十进制数(6.1、4.8、3、9.4、6、...等)。 但是一旦将数据加载到pyspark dataframe ,它也会显示带一位小数的整数(例如 3.0)。

问题:我们如何强制 pyspark 显示所有不带小数的整数值? 例如,3.0 应该显示为 3。

from pyspark.sql.types import StringType
from pyspark.sql import functions as F

df = spark.read.csv(".......dfs.core.windows.net/myDataFile.txt", sep="|", header="true", inferSchema="true")

不确定您要准确完成什么 - 出于显示目的,我通常建议在 Spark 之外进行。 我通常将 Spark 主要用于数据处理——读取数据、执行转换/计算、写入数据。

报告(显示/格式很重要)可以在之后单独完成。

但是,如果您必须在 Spark 中进行格式化:

from pyspark.sql.functions import col, format_string, lit, when
from pyspark.sql.types import IntegerType

nums = spark.createDataFrame([(6.1,),(4.8,),(3.0,),(9.4,),(6.0,)], "num: float")
nums.select(
    when(
        col("num").cast(IntegerType()) == col("num"),
        format_string("%.0f", col("num"))
    ).otherwise(
        col("num").cast(StringType())
    ).alias("formatted_num")
).show()

产生:

+-------------+
|formatted_num|
+-------------+
|          6.1|
|          4.8|
|            3|
|          9.4|
|            6|
+-------------+

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM