【问题标题】:How to FILTER for string in numeric column如何过滤数字列中的字符串
【发布时间】:2021-06-16 15:12:54
【问题描述】:

我正在尝试过滤掉我的 Spark DF,只在 numeric 字段中显示 text 值 - 因为数据是非结构化的。

不太清楚如何在上面的场景中使用下面的代码:

sparkdf = sparkdf.filter(col("colToFilter") <evaluation>)

如果我要在 SQL 中尝试类似的操作,我会执行以下操作:

SELECT * FROM tbl
WHERE col NOT LIKE '%[0-9]%'

我当前表格的示例如下所示:

|RefId|
|0|
|1|
|1|
|1|
|RefNum2|
|1|

我只想将“RefNum2”显示为输出。

非常感谢任何帮助。

谢谢。

【问题讨论】:

  • 您能否将您的帖子与输入/输出数据的示例相结合?

标签: sql dataframe apache-spark pyspark apache-spark-sql


【解决方案1】:

最简单的请求: select * from tbl1 where col regexp('[a-z]');

【讨论】:

  • 显示至少有一些小写拉丁字母的非数字字符的所有内容
【解决方案2】:

您可以使用rlike 过滤器,如下所示:

df.filter("RefId NOT RLIKE '^[0-9]+$'").show()
+-------+
|  RefId|
+-------+
|RefNum2|
+-------+

或者

import pyspark.sql.functions as F

df.filter(~F.col("RefId").rlike("^[0-9]+$")).show()
+-------+
|  RefId|
+-------+
|RefNum2|
+-------+

【讨论】:

    猜你喜欢
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 2016-01-11
    • 2022-01-25
    • 1970-01-01
    • 2022-01-16
    相关资源
    最近更新 更多