You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从含缺失值的pandas数据框中提取数值以进行数学运算?

把pandas缺失值布尔标记转成数值类型

我懂你的需求啦——你现在用dfs['REV_PIZ'].isna()得到的是布尔值组成的Series,但想要转成纯数值(1代表缺失,0代表非缺失)来做后续的数学运算,对吧?这里有几种简单可靠的方法可以实现:

  • 方法一:直接转换数据类型
    布尔值在pandas里本质上可以被当作1(True)和0(False),但如果要明确转成整数类型,用astype(int)就可以:

    d = dfs['REV_PIZ'].isna().astype(int)
    

    这样得到的d就是整数类型的Series,完全可以直接用于加减乘除等数学运算。

  • 方法二:用replace做值映射
    如果想要更直观地定义缺失值对应的数值,可以用replace方法手动指定映射关系:

    d = dfs['REV_PIZ'].isna().replace({True: 1, False: 0})
    

    这种方式灵活性更高,比如后续如果需要把缺失值标记为其他数值(比如-1),直接修改映射字典就行。

  • 方法三:用numpy.where生成数值数组
    如果你习惯用numpy的工具,也可以用np.where来生成数值结果:

    import numpy as np
    d = np.where(dfs['REV_PIZ'].isna(), 1, 0)
    

    这个方法返回的是numpy数组,如果需要保持pandas Series的结构,再转一下就行:

    import pandas as pd
    d = pd.Series(d, index=dfs.index)
    

补充一句:如果只是临时做数学运算,甚至不用转换——因为在pandas的运算中,布尔值会自动被解析为1和0,比如计算缺失值的数量,直接dfs['REV_PIZ'].isna().sum()就可以得到缺失值的总数,本质就是把True当作1求和。但如果需要把这个标记列作为数值列长期使用,上面的转换方法就很有必要啦。

内容的提问来源于stack exchange,提问作者MikiBelavista

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:53:37