使用Spark 2.1.1
以下是我的数据框
id Name1 Name2
1 Naveen Srikanth
2 Naveen Srikanth123
3 Naveen
4 Srikanth Naveen
现在需要根据两个条件筛选行,因为名称有数字,所以需要过滤掉2和3的条件&n; 123和3具有空值
使用以下代码仅过滤行ID 2
df.select("*").filter(df["Name2"].rlike("[0-9]")).show()
陷入困境,包括第二个条件。
答案 0 :(得分:4)
执行以下操作可以解决您的问题
from pyspark.sql.functions import col
df.filter((!col("Name2").rlike("[0-9]")) | (col("Name2").isNotNull))
答案 1 :(得分:0)
将多个条件放入过滤器应该很简单。
val df = List(
("Naveen", "Srikanth"),
("Naveen", "Srikanth123"),
("Naveen", null),
("Srikanth", "Naveen")).toDF("Name1", "Name2")
import spark.sqlContext.implicits._
df.filter(!$"Name2".isNull && !$"Name2".rlike("[0-9]")).show
或者如果您不想使用spark-sql $
:
df.filter(!df("Name2").isNull && !df("Name2").rlike("[0-9]")).show
或在Python中:
df.filter(df["Name2"].isNotNull() & ~df["Name2"].rlike("[0-9]")).show()