猿问

如何检查pyspark数据框中的字符串列是否都是数字

我有一个Dataframe带有strings. 如何检查其中的哪些行是数字。我在 PySpark 的官方文档中找不到任何功能-


values = [('25q36',),('75647',),('13864',),('8758K',),('07645',)]

df = sqlContext.createDataFrame(values,['ID',])

df.show()

+-----+

|   ID|

+-----+

|25q36|

|75647|

|13864|

|8758K|

|07645|

+-----+

在 Python 中,有一个函数.isDigit()可以返回True或者False是否string只包含数字。


预期数据帧 -


+-----+-------+

|   ID| Value |

+-----+-------+

|25q36| False |

|75647| True  |

|13864| True  |

|8758K| False |

|07645| True  |

+-----+-------+

我想避免创建一个UDF.


慕娘9325324
浏览 347回答 3
3回答

紫衣仙女

如果您愿意,您还可以udf为此目的构建自定义:from pyspark.sql.types import BooleanTypefrom pyspark.sql import functions as Fdef is_digit(val):    if val:        return val.isdigit()    else:        return Falseis_digit_udf = udf(is_digit, BooleanType())df = df.withColumn('Value', F.when(is_digit_udf(F.col('ID')), F.lit(True)).otherwise(F.lit(False)))
随时随地看视频慕课网APP

相关分类

Python
我要回答