如何在Databricks中去除字段的.000000,保留小数点前数值?
在Databricks中去除字段的“.000000”后缀
针对你要处理的类似“2386.000000”这类字段,在Databricks里有几种简单的实现方式,分SQL和PySpark两种场景说明:
方法一:正则表达式替换(适用于字符串类型字段)
如果字段是字符串格式,直接用regexp_replace匹配结尾的“.000000”并替换为空:
-- SQL写法 SELECT regexp_replace(your_column_name, '\\.000000$', '') AS cleaned_column FROM your_table;
# PySpark写法 from pyspark.sql.functions import regexp_replace, col df = df.withColumn( "cleaned_column", regexp_replace(col("your_column_name"), r"\.000000$", "") )
这里的$确保只匹配字段末尾的目标后缀,避免误替换字段中间出现的类似字符。
方法二:转换为整数类型(适用于数值类型字段)
如果字段是数值类型(比如double、float),直接转成整数就能自动去掉末尾的“.000000”:
-- SQL写法 SELECT CAST(your_column_name AS INT) AS cleaned_column FROM your_table; -- 用FLOOR函数也能达到同样效果 SELECT FLOOR(your_column_name) AS cleaned_column FROM your_table;
# PySpark写法 from pyspark.sql.functions import col df = df.withColumn( "cleaned_column", col("your_column_name").cast("int") )
这种方法效率更高,但只适合确定字段值小数部分全为0的场景。
方法三:截取小数点前内容(通用场景)
不管字段是字符串还是数值类型,都可以先转成字符串,再截取小数点前的部分:
-- SQL写法 SELECT split(your_column_name, '\\.')[0] AS cleaned_column FROM your_table;
# PySpark写法 from pyspark.sql.functions import split, col df = df.withColumn( "cleaned_column", split(col("your_column_name"), r"\.")[0] )
这种方法通用性强,哪怕后续遇到其他小数位数的情况,也能保留整数部分。
内容的提问来源于stack exchange,提问作者Mariana
相关产品推荐
相关产品推荐

