Разница между na(). Drop() и фильтром (col.isNotNull) (Apache Spark)

Есть ли разница в семантике между df.na().drop() и df.filter(df.col("onlyColumnInOneColumnDataFrame").isNotNull() && !df.col("onlyColumnInOneColumnDataFrame").isNaN()), где df - Apache Spark Dataframe?

Или я должен считать это ошибкой, если первый из них НЕ возвращает null (а не значение String null, а просто значение null) в столбце onlyColumnInOneColumnDataFrame, а второй -?

EDIT: добавлен !isNaN(). onlyColumnInOneColumnDataFrame является единственным столбцом в данном Dataframe. Пусть говорят, что это тип Integer.

Ответ 1

С df.na.drop() вы удаляете строки, содержащие любые значения null или NaN.

С df.filter(df.col("onlyColumnInOneColumnDataFrame").isNotNull()) вы удаляете те строки, у которых есть нуль, только в столбце onlyColumnInOneColumnDataFrame.

Если вы хотите достичь того же, это будет df.na.drop(["onlyColumnInOneColumnDataFrame"]).

Ответ 2

В одном случае мне пришлось выбирать записи с NA или нулями или> = 0. Я мог бы сделать это, используя только функцию coalesce и ни одну из вышеуказанных функций.

rdd.filter("coalesce(index_column, 1000) >= 0") 

Ответ 3

Я не знаю, получил ли ты свой ответ. Но это должно работать:

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

или даже:

df.na.drop(how = 'any')