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

后端 未结 9 947
轻奢々
轻奢々 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条回答
  •  慢半拍i
    慢半拍i (楼主)
    2021-02-01 19:04

    Generally there are two steps - substitute all not NAN values and then substitute all NAN values.

    1. dataframe.where(~dataframe.notna(), 1) - this line will replace all not nan values to 1.
    2. dataframe.fillna(0) - this line will replace all NANs to 0

    Side note: if you take a look at pandas documentation, .where replaces all values, that are False - this is important thing. That is why we use inversion to create a mask ~dataframe.notna(), by which .where() will replace values

提交回复
热议问题