web-dev-qa-db-fra.com

Python Pandas remplacer plusieurs colonnes zéro par Nan

Liste avec les attributs des personnes chargées dans pandas dataframe df2. Pour le nettoyage, je veux remplacer la valeur zéro (0 ou '0') par np.nan.

df2.dtypes

ID                   object
Name                 object
Weight              float64
Height              float64
BootSize             object
SuitSize             object
Type                 object
dtype: object

Code de travail pour définir la valeur zéro sur np.nan:

df2.loc[df2['Weight'] == 0,'Weight'] = np.nan
df2.loc[df2['Height'] == 0,'Height'] = np.nan
df2.loc[df2['BootSize'] == '0','BootSize'] = np.nan
df2.loc[df2['SuitSize'] == '0','SuitSize'] = np.nan

Croyez que cela peut être fait d'une manière similaire/plus courte:

df2[["Weight","Height","BootSize","SuitSize"]].astype(str).replace('0',np.nan)

Cependant, ce qui précède ne fonctionne pas. Les zéros restent dans df2. Comment y faire face?

14
Wouter Dunnes
data['amount']=data['amount'].replace(0, np.nan)
data['duration']=data['duration'].replace(0, np.nan)
1
Ayyasamy

Vous pouvez utiliser la méthode 'replace' et passer les valeurs que vous souhaitez remplacer dans une liste comme premier paramètre avec celle souhaitée comme deuxième paramètre:

cols = ["Weight","Height","BootSize","SuitSize","Type"]
df2[cols] = df2[cols].replace(['0', 0], np.nan)
0
christk