Разница между 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')