[英]Python Pandas - replace values with NAN in multiple columns based on mutliple dates?
[英]Python Pandas replace multiple columns zero to Nan
列出加載到 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 中。 如何解決這個問題?
您可以使用 'replace' 方法並將要在列表中替換的值作為第一個參數傳遞,並將所需的值作為第二個參數傳遞:
cols = ["Weight","Height","BootSize","SuitSize","Type"]
df2[cols] = df2[cols].replace(['0', 0], np.nan)
嘗試:
df2.replace(to_replace={
'Weight':{0:np.nan},
'Height':{0:np.nan},
'BootSize':{'0':np.nan},
'SuitSize':{'0':np.nan},
})
data['amount']=data['amount'].replace(0, np.nan)
data['duration']=data['duration'].replace(0, np.nan)
另一種替代方式:
cols = ["Weight","Height","BootSize","SuitSize","Type"]
df2[cols] = df2[cols].mask(df2[cols].eq(0) | df2[cols].eq('0'))
在“年齡”列中,用空格替換零
df['age'].replace(['0', 0'], '', inplace=True)
用 nan 替換單列的零
df['age'] = df['age'].replace(0, np.nan)
用 nan 替換多列的零
cols = ["Glucose", "BloodPressure", "SkinThickness", "Insulin", "BMI"]
df[cols] = df[cols].replace(['0', 0], np.nan)
用 nan 替換數據幀的零
df.replace(0, np.nan, inplace=True)
如果您只想替換整個數據框中的零,則可以直接替換它們而無需指定任何列:
df = df.replace({0:pd.NA})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.