python - 如何检查pyspark数据框中的字符串列是否全部为数字

标签 python apache-spark pyspark apache-spark-sql numeric

我有一个 PySpark Dataframe,其中包含一列 strings。如何检查其中的哪些行是数字。我在 PySpark 的 official documentation 中找不到任何函数.

values = [('25q36',),('75647',),('13864',),('8758K',),('07645',)]
df = sqlContext.createDataFrame(values,['ID',])
df.show()
+-----+
|   ID|
+-----+
|25q36|
|75647|
|13864|
|8758K|
|07645|
+-----+

在 Python 中,有一个函数 .isDigit() 如果 string 返回 TrueFalse是否只包含数字。

预期的数据帧:

+-----+-------+
|   ID| Value |
+-----+-------+
|25q36| False |
|75647| True  |
|13864| True  |
|8758K| False |
|07645| True  |
+-----+-------+

我想避免创建 UDF

最佳答案

一个简单的转换就可以完成这项工作:

from pyspark.sql import functions as F

my_df.select(
  "ID",
  F.col("ID").cast("int").isNotNull().alias("Value ")
).show()

+-----+------+
|   ID|Value |
+-----+------+
|25q36| false|
|75647|  true|
|13864|  true|
|8758K| false|
|07645|  true|
+-----+------+

关于python - 如何检查pyspark数据框中的字符串列是否全部为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53743795/

相关文章:

apache-spark - 如何选择所有列而不是硬编码每一列?

java - 在同一节点上进行分区处理?

java - 为什么 Spark 在本地模式下失败并显示 "Failed to get broadcast_0_piece0 of broadcast_0"?

group-by - 如何在 Pyspark 数据框中分组后收集 map ?

python - XML 到 csv(类似)格式

python - 更改在基类的 __init__ 中调用的函数的签名

python - 运行 Neo4j Python Bolt 驱动程序示例时,错误 :"ImportError: No module named ' _backend'"

python - 如何重新安装 pip 包,即使它存在

java - 如何在 spark 上部署 tensorflow 模型仅进行推理

python - 如何在azure hdinsight pyspark3内核上安装python包?