多列上的 PySpark 数据框过滤器

use*_*373 0 python filter apache-spark-sql pyspark

使用 Spark 2.1.1

下面是我的数据框

id Name1   Name2

1 Naveen Srikanth 

2 Naveen Srikanth123

3 Naveen 

4 Srikanth Naveen
Run Code Online (Sandbox Code Playgroud)

现在需要根据两个条件过滤行,即 2 和 3 需要过滤掉,因为名称有数字的 123 和 3 有空值

使用下面的代码只过滤行 id 2

df.select("*").filter(df["Name2"].rlike("[0-9]")).show()
Run Code Online (Sandbox Code Playgroud)

被卡住以包含第二个条件。

Ram*_*jan 6

执行以下操作应该可以解决您的问题

from pyspark.sql.functions import col
df.filter((!col("Name2").rlike("[0-9]")) | (col("Name2").isNotNull))
Run Code Online (Sandbox Code Playgroud)