如何在PySpark中移除DataFrame中的Null记录?
移除Spark DataFrame中值为\N的记录
你的DataFrame里的\N是字符串类型的空值占位符,不是Spark原生的Null值,所以需要通过字符串匹配来过滤掉这些行,以下是常用的实现方式:
Python 版本
方式1:使用filter/where方法(二者等价)
from pyspark.sql import SparkSession # 初始化SparkSession(如果还没创建的话) spark = SparkSession.builder.appName("FilterBackslashN").getOrCreate() # 过滤掉value等于"\N"的行 filtered_df = df.filter(df.value != "\\N") # 或者用where # filtered_df = df.where(df.value != "\\N")
方式2:使用取反匹配
如果需要更灵活的匹配逻辑,也可以用~取反结合like:
filtered_df = df.filter(~df.value.like("\\N"))
Scala 版本
方式1:使用filter/where方法
import org.apache.spark.sql.SparkSession import org.apache.spark.sql.functions.col val spark = SparkSession.builder.appName("FilterBackslashN").getOrCreate() val filteredDf = df.filter(col("value") != "\\N") // 或者用where // val filteredDf = df.where(col("value") != "\\N")
方式2:使用取反匹配
val filteredDf = df.filter(!col("value").like("\\N"))
注意:代码里的
"\\N"是因为字符串中的反斜杠需要转义,确保能精确匹配到DataFrame里的\N值。
内容的提问来源于stack exchange,提问作者Namitha Janardhanan
相关产品推荐
相关产品推荐

