为什么 df.where() 不替换所有空值?

Why does df.where() not replace all null values?

我有一个包含非常混合列的数据框。我正在尝试将所有出现的 NoneNaN 设置为 None.

我正在尝试回答这个问题:但是接受的答案并没有捕获所有空实例。示例:

my_array = ['1','2',None,4]
df = pd.DataFrame([my_array], columns=['Morning', 'Midday', 'Evening', 'Night'])
df = df.append({'Midday':'10'}, ignore_index=True)

这导致

  Morning Midday Evening  Night
0       1      2    None    4.0
1     NaN     10     NaN    NaN

应用df.where()查找并替换所有空值导致:

df.where(df.notnull(), None)

  Morning Midday Evening  Night
0       1      2    None    4.0
1    None     10    None    NaN

但是我想要输出

  Morning Midday Evening  Night
0       1      2    None    4.0
1    None     10    None    None

我哪里出错了,或者 df.where() 出错了?

您需要将数据类型更改为 object

out = df.astype(object).where(df.notna(), None)
Out[392]: 
  Morning Midday Evening Night
0       1      2    None   4.0
1    None     10    None  None