从 pyspark 列中删除小数值

Cod*_*tor 5 pyspark

我有一个 pyspark 数据框列,其中有混合值,例如有些是字符串,有些是数字,如下所示 -

Source_ids
abc_123
1234.0
345
abc_cad
K-123
540.0
456.0
Run Code Online (Sandbox Code Playgroud)

我想删除小数部分,无论它出现在哪里。所以结果应该是

Source_ids
abc_123
1234
345
abc_cad
K-123
540
456
Run Code Online (Sandbox Code Playgroud)

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

Sur*_*ali 5

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

该表达式找到 thedot并替换其后的所有内容。

from pyspark.sql.functions import *
df.withColumn("Source_ids", regexp_replace('Source_ids', '\..*$', '')).show()
Run Code Online (Sandbox Code Playgroud)