如何从 Pyspark Dataframe 中的字符串列中过滤字母值?

Posted

技术标签:

【中文标题】如何从 Pyspark Dataframe 中的字符串列中过滤字母值?【英文标题】:How to filter alphabetic values from a String column in Pyspark Dataframe? 【发布时间】:2021-12-02 19:47:16 【问题描述】:

我有一个需要过滤的字符串列。我需要获取所有包含字母或特殊字符的值。

初始列:

id
12345
23456
3940A
19045
2BB56
3(40A

预期输出:

id
3940A
2BB56
3(40A

TIA

【问题讨论】:

【参考方案1】:

只需简单的数字正则表达式即可解决您的问题。 ^\d+$ 将捕获所有完全是数字的值。

from pyspark.sql import functions as F

df.where(F.regexp_extract('id', '^\d+$', 0) == '').show()

+-----+
|   id|
+-----+
|3940A|
|2BB56|
|3(401|
+-----+

【讨论】:

【参考方案2】:

这个问题很模糊,所以这是我能给出的最佳答案:

df_filtered = df.filter(any(not c.isdigit() for c in df.id))

【讨论】:

以上是关于如何从 Pyspark Dataframe 中的字符串列中过滤字母值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在多列上旋转 PySpark 中的 DataFrame?

如何根据pyspark中的条件组合dataFrame中的行

如何从 Python 循环创建 PySpark DataFrame

从 PySpark DataFrame 中的列表列表中删除列表

在 PySpark 中,如何根据另一个 DataFrame 中的查找来填充新列?

如何在 PySpark 1.6 中将 DataFrame 列从字符串转换为浮点/双精度?