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

标签 python pandas dataframe notnull

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

我正在尝试回答这个问题:Use None instead of np.nan for null values in pandas DataFrame但接受的答案并没有捕获所有空实例。示例:

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

关于python - 为什么 df.where() 不替换所有空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70803876/

相关文章:

python - 按顺序计算每组 pandas

python - 获取行中的最高值,但仅在前一行的特定条件下

python - Pandas 合并重复的 DataFrame 列,保留列名称

python - 如何制作可以下载带有各自URL的图像的图像爬虫

python - Pandas:编辑数据框的一部分,使其影响主数据框

Python - Pandas,将长列拆分为多列

python - OS X ("ImportError: cannot import name _thread"上的 Matplotlib 问题)

python - 将 python IDLE 更新到 3.5

python - 如何在 python 中为数据框添加另一个类似标签的列?

python - 如何将一个数据框中的每个值连接到另一个数据框中的每一行?