Liste avec les attributs des personnes chargées dans le dataframe pandas df2. Pour le nettoyage, je souhaite 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 de 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?

17
Wouter Dunnes 31 juil. 2017 à 16:01

2 réponses

Meilleure réponse

Je pense que vous avez besoin de replace par dict:

cols = ["Weight","Height","BootSize","SuitSize","Type"]
df2[cols] = df2[cols].replace({'0':np.nan, 0:np.nan})
38
jezrael 31 juil. 2017 à 13:04
data['amount']=data['amount'].replace(0, np.nan)
data['duration']=data['duration'].replace(0, np.nan)
1
Ayyasamy 5 août 2019 à 11:37