如何去除PySpark DataFrame数值列小数点后多余0并保留四位小数
PySpark去除数值列多余末尾0并保留四位小数
需求说明
现有PySpark DataFrame df1,其中"数值"列存在大量末尾多余0,需保留小数点后四位(含末尾必要的0),处理前后数据如下:
原始数据
| 名称 | 数值 |
|---|---|
| A | 13.89450000 |
| B | 11.56300000 |
| C | 25.45000000 |
期望结果
| 名称 | 数值 |
|---|---|
| A | 13.8945 |
| B | 11.5630 |
| C | 25.4500 |
解决方案
方法一:转换为Decimal类型
将数值列转为decimal(10,4)类型,自动保留四位小数:
from pyspark.sql import functions as F df_result = df1.withColumn("数值", F.col("数值").cast("decimal(10,4)"))
转换后列类型为Decimal,显示时自动呈现四位小数格式。若需要字符串类型结果,可追加字符串转换:
df_result = df1.withColumn("数值", F.col("数值").cast("decimal(10,4)").cast("string"))
方法二:使用格式化字符串
通过format_string函数指定%.4f格式,强制保留四位小数,返回字符串类型结果:
from pyspark.sql import functions as F df_result = df1.withColumn("数值", F.format_string("%.4f", F.col("数值")))
内容的提问来源于stack exchange,提问作者Emma
相关产品推荐
相关产品推荐

