web-dev-qa-db-fra.com

Comment supprimer des lignes avec des valeurs NULL dans une colonne pyspark

J'ai un cadre de données et je voudrais supprimer toutes les lignes avec une valeur NULL dans l'une des colonnes (chaîne). Je peux facilement obtenir le compte de cela:

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

J'ai essayé de le laisser tomber en utilisant la commande suivante. Il s'exécute mais le décompte est toujours positif.

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

J'ai essayé différentes tentatives mais il renvoie l'erreur 'object is not callable'. 

6
jack rk

Les dataframes sont immuables. si vous appliquez simplement un filtre qui supprime les valeurs non nulles, vous créez un nouveau cadre de données sans les enregistrements contenant des valeurs nulles.

df = df.filter(df.col_X. isNotNull())
10
rogue-one

Utilisez soit drop avec subset:

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

ou is_NotNull

df.filter(df.col_X.isNotNull())
12
user8060687

une autre variante est: 

from pyspark.sql.functions import col

df = df.where(col("columnName").isNotNull())
0
Grant Shannon

vous pouvez également ajouter une condition de chaîne vide

df = df.filter(df.col_X. isNotNull() | df.col_X != "")
0
Selvaraj S.