将包含人员属性的列表加载到pandas数据框df2
中。 为了清理,我想用np.nan
替换值为零(0
或'0'
)。
df2.dtypes
ID object
Name object
Weight float64
Height float64
BootSize object
SuitSize object
Type object
dtype: object
将值设置为 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
相信这可以用类似/更短的方法完成:
df2[["Weight","Height","BootSize","SuitSize"]].astype(str).replace('0',np.nan)
然而,上述方法并不起作用。零仍然存在于df2中。如何解决这个问题?
df2[cols].replace({'0':np.nan, 0:np.nan}, inplace=True)
则会出现错误A value is trying to be set on a copy of a slice from a DataFrame
? - Alexandr Kapshuk.replace({'.':'')
。 - jezrael