Comment supprimer une ligne entière si les valeurs d'une colonne sont NaN [fermé]

8

Je voudrais supprimer toutes les lignes contenant des valeurs NaN appartenant à une colonne. Supposons que j'ai un ensemble de données comme celui-ci:

Age  Height  Weight  Gender
12    5'7     NaN     M
NaN   5'8     160     M
32    5'5     165     NaN
21    NaN     155     F
55    5'10    170     NaN

Je veux supprimer toutes les lignes où 'Gender' a des valeurs NaN. La sortie que j'aimerais:

Age  Height  Weight Gender
12   5'7     NaN     M
NaN  5'8     160     M
21   NaN     155     F

Merci d'avance!

uharsha33
la source
2
Vous devez vraiment nous dire de quelle structure de données il s'agit. Par exemple, est-ce SQL?
Paul Childs

Réponses:

15

Eh bien, si l'ensemble de données n'est pas trop volumineux, je suggère d'utiliser des pandas pour nettoyer les données. Vous devez donc d'abord faire

Python2

python2 -m pip install pandas

Python3

python3 -m pip install pandas

Si anaconda est déjà installé, vous pouvez ignorer l'étape ci-dessus. Ensuite, vous pouvez passer par un IDE (comme jupyter) ou par le shell, tapez les commandes suivantes

import pandas as pd
df = pd.read_csv("filename", dtype=str)
#or if excel file
#df = pd.read_excel("filename", dtype=str)

df = df[pd.notnull(df['Gender'])]

Ensuite, vous souhaitez enregistrer votre résultat dans un fichier avec

df.to_csv("newfile"); 
Haris Nadeem
la source
5

Si vous travaillez sur Python Dataframe, veuillez essayer ceci.

import pandas as pd
df = df[np.isfinite(df['Gender'])]

Ou vous pouvez utiliser notnull au lieu de isfinite.

import pandas as pd
df = df[pd.notnull(df['Gender'])]
Jason Ray
la source