web-dev-qa-db-fra.com

Pyspark Suppression des valeurs nulles d'une colonne dans la trame de données

Mon Dataframe ressemble à ci-dessous

ID,FirstName,LastName

1,Navee,Srikanth

2,,Srikanth 

3,Naveen,

Maintenant, mon énoncé de problème est que je dois supprimer la ligne numéro 2 car le prénom est nul.

J'utilise ci-dessous le script pyspark

join_Df1= Name.filter(Name.col(FirstName).isnotnull()).show()

Je reçois une erreur

  File "D:\0\NameValidation.py", line 13, in <module>
join_Df1= filter(Name.FirstName.isnotnull()).show()

TypeError: l'objet 'Column' n'est pas appelable

Quelqu'un peut-il m'aider à résoudre ce problème

5
Naveen Srikanth

Il semble que votre DataFrame FirstName ait une valeur vide à la place Null. Voici quelques options à essayer: -

df = sqlContext.createDataFrame([[1,'Navee','Srikanth'], [2,'','Srikanth'] , [3,'Naveen','']], ['ID','FirstName','LastName'])
df.show()
+---+---------+--------+
| ID|FirstName|LastName|
+---+---------+--------+
|  1|    Navee|Srikanth|
|  2|         |Srikanth|
|  3|   Naveen|        |
+---+---------+--------+

df.where(df.FirstName.isNotNull()).show() #This doen't remove null because df have empty value
+---+---------+--------+
| ID|FirstName|LastName|
+---+---------+--------+
|  1|    Navee|Srikanth|
|  2|         |Srikanth|
|  3|   Naveen|        |
+---+---------+--------+

df.where(df.FirstName != '').show()
+---+---------+--------+
| ID|FirstName|LastName|
+---+---------+--------+
|  1|    Navee|Srikanth|
|  3|   Naveen|        |
+---+---------+--------+

df.filter(df.FirstName != '').show()
+---+---------+--------+
| ID|FirstName|LastName|
+---+---------+--------+
|  1|    Navee|Srikanth|
|  3|   Naveen|        |
+---+---------+--------+

df.where("FirstName != ''").show()
+---+---------+--------+
| ID|FirstName|LastName|
+---+---------+--------+
|  1|    Navee|Srikanth|
|  3|   Naveen|        |
+---+---------+--------+
9
Rakesh Kumar

Vous devriez faire comme ci-dessous

join_Df1.filter(join_Df1.FirstName.isNotNull()).show

J'espère que cela t'aides!

4
koiralo

Je pense que vous pourriez avoir besoin de cette notnull().

Voici donc votre entrée dans le fichier csv my_test.csv:

ID,FirstName,LastName
1,Navee,Srikanth

2,,Srikanth

3,Naveen

Le code:

import pandas as pd
df = pd.read_csv("my_test.csv")

print(df[df['FirstName'].notnull()])

production:

  ID FirstName  LastName
0   1     Navee  Srikanth
2   3    Naveen       NaN

Voilà ce que vous aimeriez! df[df['FirstName'].notnull()]

sortie de df['FirstName'].notnull():

0     True
1    False
2     True

Cela crée une trame de données dfdf['FirstName'].notnull() renvoie True

Comment cela est-il vérifié? df['FirstName'].notnull() Si la valeur de la colonne FirstName n'est pas nulle, retourne True sinon si NaN est présente, retourne False.

0
void