How to replace all non-NaN entries of a dataframe with 1 and all NaN with 0

后端 未结 9 929
轻奢々
轻奢々 2021-02-01 18:07

I have a dataframe with 71 columns and 30597 rows. I want to replace all non-nan entries with 1 and the nan values with 0.

Initially I tried for-loop on each value of th

9条回答
  •  孤独总比滥情好
    2021-02-01 18:45

    You can take the return value of df.notnull(), which is False where the DataFrame contains NaN and True otherwise and cast it to integer, giving you 0 where the DataFrame is NaN and 1 otherwise:

    newdf = df.notnull().astype('int')
    

    If you really want to write into your original DataFrame, this will work:

    df.loc[~df.isnull()] = 1  # not nan
    df.loc[df.isnull()] = 0   # nan
    

提交回复
热议问题