web-dev-qa-db-ja.com

Python Pandas複数の列をゼロからナンに置き換える

pandas dataframe df2に読み込まれた人物の属性を含むリスト。クリーンアップのために、値ゼロ(0または'0')をnp.nanで置き換えます。

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に残ります。これに取り組むには?

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

'replace'メソッドを使用して、リストで置き換える値を最初のパラメーターとして渡し、必要な値を2番目のパラメーターとして渡すことができます。

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