我有一个数据帧,我想在其中一列(字符串)中删除所有具有NULL值的行。我很容易理解:
df.filter(df.col_X.isNull()).count()
我尝试使用以下命令将其删除。它执行但计数仍然返回为正
df.filter(df.col_X.isNull()).drop()
我尝试了不同的尝试,但它返回'object is not callable'错误。
答案 0 :(得分:15)
使用drop
与subset
:
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