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

时间:2017-05-24 15:49:36

标签: apache-spark pyspark spark-dataframe

我有一个数据帧,我想在其中一列(字符串)中删除所有具有NULL值的行。我很容易理解:

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

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

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

我尝试了不同的尝试,但它返回'object is not callable'错误。

6 个答案:

答案 0 :(得分:15)

使用dropsubset

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

is_NotNull

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

答案 1 :(得分:11)

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

$('.draggable').first().draggable( 'disable' ).removeClass('draggable');

答案 2 :(得分:2)

如果您要删除任何值为null的行,请使用

df.na.drop()  //same as df.na.drop("any") default is "any"

仅在该行的所有值均为空时才删除,请使用

df.na.drop("all")

要通过传递列列表进行删除,请使用

df.na.drop("all", Seq("col1", "col2", "col3"))

答案 3 :(得分:0)

您也可以添加空字符串条件

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

答案 4 :(得分:0)

另一种变化是:

from pyspark.sql.functions import col

df = df.where(col("columnName").isNotNull())

答案 5 :(得分:0)

您可以使用接受类似 SQL 的查询语法的 expr() 函数。

unitOptions