从 pyspark 列中删除十进制值

Posted

技术标签:

【中文标题】从 pyspark 列中删除十进制值【英文标题】:Remove decimal value from pyspark column 【发布时间】:2020-10-08 01:33:08 【问题描述】:

我有一个 pyspark 数据框列,其中混合了一些值,比如一些是字符串,一些是下面的数字 -

Source_ids
abc_123
1234.0
345
abc_cad
K-123
540.0
456.0

我想把小数部分去掉。所以结果应该是

Source_ids
abc_123
1234
345
abc_cad
K-123
540
456

我们不能将此列设为长类型,因为它也有文本。我怎样才能实现它?

【问题讨论】:

【参考方案1】:

使用regexp_replace。将\..*$ 替换为空字符串''

此表达式找到dot 并替换之后的所有内容。

from pyspark.sql.functions import *
df.withColumn("Source_ids", regexp_replace('Source_ids', '\..*$', '')).show()

【讨论】:

以上是关于从 pyspark 列中删除十进制值的主要内容,如果未能解决你的问题,请参考以下文章

从 PowerBI 表的列中删除“%”符号

如何删除 Spark 表列中的空格(Pyspark)

无法在pyspark数据框中以十进制类型保存十进制值

如何使用模式匹配从 pyspark 数据框中删除行?

在 Pyspark 中使用整数与十进制值进行过滤

从字符串 PySpark 数据框列中删除正则表达式