如何在一列pyspark中删除带空值的行

问题描述 投票:7回答:4

我有一个数据帧,我想在其中一列(字符串)中删除所有具有NULL值的行。我可以很容易地得到这个数:

df.filter(df.col_X.isNull()).count()

我尝试使用以下命令删除它。它执行但计数仍然返回为正数

df.filter(df.col_X.isNull()).drop()

我尝试了不同的尝试,但它返回'对象不可调用'错误。

apache-spark pyspark spark-dataframe
4个回答
12
投票

数据帧是不可变的。因此,只应用一个删除非空值的过滤器将创建一个新的数据帧,该数据帧不具有空值的记录。

df = df.filter(df.col_X. isNotNull())

16
投票

使用dropsubset

df.na.drop(subset=["col_X"])

或者is_NotNull

df.filter(df.col_X.isNotNull())

0
投票

你有时也可以添加空字符串条件

df = df.filter(df.col_X. isNotNull() | df.col_X != "")

0
投票

另一种变化是:

from pyspark.sql.functions import col

df = df.where(col("columnName").isNotNull())
© www.soinside.com 2019 - 2024. All rights reserved.