[英]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.