web-dev-qa-db-fra.com

meilleur moyen de déposer des rangées de nan dans les pandas

Par moi-même, j'ai trouvé un moyen de supprimer des nan rangées d'un cadre de données de pandas. Soit une structure de données dat avec la colonne x qui contient des valeurs nan, existe-t-il un moyen plus élégant de supprimer chaque ligne de dat ayant une valeur nan dans la colonne x?

dat = dat[np.logical_not(np.isnan(dat.x))]
dat = dat.reset_index(drop=True)
25
kilojoules

Utilisez dropna :

dat.dropna()

Vous pouvez passer param how à drop si toutes les étiquettes sont nan ou si l’une des étiquettes est nan.

dat.dropna(how='any')    #to drop if any value in the row has a nan
dat.dropna(how='all')    #to drop if all values in the row are nan

J'espère que cela répond à votre question!

Edit 1: Si vous souhaitez supprimer des lignes contenant uniquement des valeurs nan à partir d'une ou de plusieurs colonnes, comme le suggère J. Doe dans sa réponse ci-dessous, vous pouvez utiliser les éléments suivants:

dat.dropna(subset=[col_list])  # col_list is a list of column names to consider for nan values.
73

Pour développer la réponse de Hitesh si vous souhaitez supprimer des lignes où "x" est spécifiquement nan, vous pouvez utiliser le paramètre subset. Sa réponse laissera tomber des lignes où d'autres colonnes ont nans aussi

dat.dropna(subset=['x'])
23
J. Doe

Juste au cas où les commandes des réponses précédentes ne fonctionneraient pas, Essayez ceci: dat.dropna(subset=['x'], inplace = True)

8
hRt
bool_series=pd.notnull(dat["x"])
dat=dat[bool_series]
0
Chunxiao Li